精华内容
下载资源
问答
  • 函数内部定义的变量为局部变量,程序中函数外部定义的为全局变量, 同名时,id不同。 全局变量作用于整个程序 局部变量只在定义的函数内起作用 局部变量可以调用全局变量,但不能修改全局变量,如果修改,...

    全局变量,局部变量

    函数内部定义的变量为局部变量,程序中函数外部定义的为全局变量,

    • 同名时,id不同。
    • 全局变量作用于整个程序
    • 局部变量只在定义的函数内起作用
    • 局部变量可以调用全局变量,但不能修改全局变量,如果修改,函数内部最上方加 global,先声明再修改,不然报错。global不建议用。
    • 全局变量不能调用局部变量
    • 局部变量与局部变量之间是独立的,不能相互引用
    • 全局变量是列表,字典,元组,被修改的是某个元素,整体的不能被修改。
    name = '小明'
    def n():
        name ='小红'
        print(name)
    n() # 小红
    print(name) # 小明
    
    names=['x','y','z']
    def change():
        names=['a','b','c']
        print(names)
    
    change()
    print(names)
    
    # ['a', 'b', 'c']
    # ['x', 'y', 'z']
    
    names=['x','y','z']
    def change():
        del names[2]
        print(names)
        
    change()
    print(names)
    # ['x', 'y']
    # ['x', 'y']
    

    嵌套函数

    函数内部再定义函数就是嵌套函数,函数定义之后要执行就必须调用。

    def func1():
        print('小明')
    
        def func2():
            print('小红')
    
    func1() #小明
    
    def func1():
        print('小明')
    
        def func2():
            print('小红')
    
        func2()  # 调用
    
    func1() 
    # 小明
    # 小红
    

    嵌套函数变量查找几种情况:

    1、内层函数引用变量一层一层外找。

    age=19
    def func1():
        age=20
        print(age)
    
        def func2():
            age = 21
            print(age)
        func2()
    
    func1()
    # 20
    # 21
    
    age=19
    def func1():
        age=20
        print(age)
    
        def func2():
            print(age)
        func2()
    
    func1()
    # 20
    # 20
    

    2、

    age=19
    def func1():
    
        def func2():
            print(age)
    
        age=20  # 在函数func1已经定义了,func2()执行时已经存在。
        func2()
    
    func1()
    # 20
    

    3、

    age=19
    def func1():
    
        def func2():
            print(age)
    
        func2()
        age = 20  # 报错
    
    func1()
    
    age=19
    def func1():
        global age  # 添加global之后,func2执行age19,
                    # 更改全局变量age更改全局变量age
        def func2():
            print(age)
    
        func2()
        age = 20  
    
    func1() # 19
    

    4、
    python中一个函数就是一个作用域,局部变量放置在其作用域中
    代码定义完成后,作用域已经生成,作用域链向上查找,函数名是可以当成返回值的!

    age=19
    
    
    def func1():
        global age
    
        def func2():
            print(age)
        age = 20
        func2()
    
    
    func1()
    print(age)
    
    # 20
    # 20
    
    age=19
    def func1():
        age=73
        def func2():
            print(age)
        return func2
    val=func1()
    val()
    # 73
    

    闭包

    对嵌套函数而言,每当外部函数被调用时,都将重新定义内部的函数,并返回内部的函数对象。当内部函数执行时,可以访问这个来自外部函数局部作用域的变量。

    
    def func(num):
        def func2(num2):
            return num * num2
    
        return func2
    
    
    x=func(3)  # 返回func2,函数对象,没有执行func2,加括号时执行。
    print(x(2))  # x(2)执行时,依然可以访问到外部函数func定义的作用域里的变量num=3
    # 6
    
    y=func(5)
    print(y(6))
    # 30
    
    函数func每次被调用时都会重新定义func2,并返回func2函数对象并包裹func定义的作用域。
    嵌套函数func2在外部函数之外调用时,它依然可以访问到作用域之内的局部变量。
    
    展开全文
  • 这段代码说明了在函数中声明没加var关键字的变量时,会出现什么结果。 分两种不同的情况: 1、如果函数内没有同名的局部变量覆盖“无var变量”,那么它就是个全局变量,在函数外部也可以访问到它; 2、如果...
     
    这段代码说明了在函数中声明没加var关键字的变量时,会出现什么结果。
     
    分两种不同的情况:
     
    1、如果函数内没有同名的局部变量覆盖“无var变量”,那么它就是个全局变量,在函数外部也可以访问到它;
    2、如果函数内有同名局部变量覆盖“无var变量”,那么它就会被同名局部变量覆盖了(但此时如果你在我外面调用这个变量,也不会报undefined错误)。

     

    转载于:https://www.cnblogs.com/macliu/p/5341707.html

    展开全文
  • 可以利用static在不同的文件定义同名函数同名变量,而不用担心命名冲突 static变量存放在静态存储区,变量只有一次初始化 static修饰全局变量时改变其使用范围

    可以利用static在不同的文件中定义同名函数和同名变量,而不用担心命名冲突


    static变量存放在静态存储区,变量只有一次初始化


    static修饰全局变量时改变其使用范围





    展开全文
  • 全局变量 全局变量默认初始化为0,字符型变量为空字符’’ 定义在函数外,可被本文件及其他文件的函数使用...同一文件全局变量和局部变量可以同名,在局部变量作用域内,全局变量不起作用 静态全局变量 静态...
    1. 全局变量
      • 全局变量默认初始化为0,字符型变量为空字符’’
      • 定义在函数外,可被本文件及其他文件的函数使用(外部链接),其他文件使用时序用extern声明
      • 生命周期和程序运行周期一样
      • 不同文件的全局变量不可以重名
    2. 局部变量
      • 如果没有赋初值,内容为随机
      • 如果定义在符合语句内,只在复合语句中有效
      • 同一文件中全局变量和局部变量可以同名,在局部变量作用域内,全局变量不起作用
    3. 静态全局变量
      • 静态全局变量的值只初始化一次,默认初始化为0,字符型变量为空字符’’
      • 作用域限制在本文件内(内部链接),因此不同文件的静态全局变量可以重名
      • 生命周期和程序运行周期样
      • 存储在静态区
    4. 静态局部变量
      • 静态局部变量在函数第一次调用的时候构造,只初始化一次,默认初始化为0,字符型为空字符
      • 作用域为定义的函数内
      • 生命周期和程序运行周期一样
      • 存储在静态区
    5. 全局函数
      • c语言中的函数默认都是全局的,使用static关键字可以将函数声明为静态,静态函数只能在本文件中使用
    6. 静态函数
      • 静态函数只能在本文件中使用,因此不同文件的静态函数可以重名
    7. 总结
      类型	作用域	生命周期auto变量	一对{}内	当前函数static局部变量	一对{}内	整个程序运行期extern变量	整个程序	整个程序运行期static全局变量	当前文件	整个程序运行期extern函数	整个程序	整个程序运行期static函数	当前文件	整个程序运行期register变量	一对{}内	当前函数
    展开全文
  • 变量作用域 在JavaScript,用var申明的变量实际上是有...换句话说,不同函数内部的同名变量互相独立,互不影响。 由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行: ...
  • 值与值之间是独立存在,修改一个变量不会影响其他的变量 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址,如果两个变量保存的是同一个对象地址, 当...
  • 局部变量 在一个函数内部定义的变量是内部...2) 不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰。例如,在f1函数中定义了变量b和c,倘若在f2函数中也定义变量b和c,它们在内存中占不同的单元,不会混淆。
  • PHP之变量函数

    2018-07-11 10:09:33
    也就是说,可以通过改变变量的值来调用不同的函数。例如,下面例子首先声明了两个函数foo()和bar(),然后初始化这两个变量,它们值分别为foo 和bar,最后使用变量调用函数:foo.php<?php//定义foo()函数...
  • 1.下面有关重载函数的说法正确的是 重载函数必须具有不同的返回值类型 重载函数形参个数必须不同 ...重载函数必须有不同的形参...2.对类声明的变量,下列描述正确的是( ) 属于全局变量 只属
  •  在同一个方法,局部变量可以有相同名字,但是在不同的方法里面可以有相同名字。 在两类变量同名的时候,局部变量优先级更大。 constructor;构造函数。 在创建对象时候,对象成员...
  • PHP中的函数与js中的函数不同之处 1: 在js中,可以多次声明同名函数,在一个PHP页面中,不能多次同名函数。 2: 在js中,函数名区分大小写,PHP中变量区分大小写, 函数名不区分大小写(类方法也不区分)。 3: 在PHP中...
  • 1、每个文件代表一个模块,如果在不同模块同名函数,先通过import关键字导入指定模块就可以区分 第一种方式 from module1 import foo from module2 import foo 第二种方式 import module1 as m1 import module...
  • 文章目录函数函数也是对象,内存底层分析变量的作用域(全局变量和局部变量)效率测速参数传递传递可变对象...变量起作用范围叫做变量的作用域,不同作用域内同名变量之间互不影响。 变量分为:全局变量、局部变量
  • 局部变量 局部变量,就是在 函数内部定义的变量 不同的函数,可以定义相同的名字的局部... # 函数中的两个局部变量虽然同名,但互不影响 def test1(): a = 10 print(&quot;%d&quot; % a) def test2():
  • java中的成员变量和局部变量 成员变量:定义在类中,描述对象的属性 局部变量:定义在方法中,用来临时保存数据 变量的使用者和作用域 成员变量:本类以及其他类均可以使用;在整个类内部有效; 局部变量:仅...
  • 一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。指针传递的是一个变量或者一个值的地址,但是它本身还是采用值传递的方式。即你不能使它指向另外一块地址,但是...
  • (1)static全局变量和普通全局变量的区别 ...(因而同名静态全局变量可以被定义在不同源文件中,使用关键字static) 普通全局变量作用域是整个源程序,可以被源程序中的各个源文件所使用(关键字extern)。 (...
  • 利用这一特性可以不同的文件定义同名函数同名变量,而不必担心命名冲突。Static可以用作函数变量的前缀,对于函数来讲,static作用仅限于隐藏,而对于变量,static还有下面两个作用。 ...
  • 使用 static 修饰的变量函数的作用域仅限于当前模块,对其他模块隐藏,利用这一特性可以不同的文件定义同名的变量函数,而不必担心命名冲突。     static 除了可以修饰全局变量,还可以修饰局部变量,...
  • 作用域 局部作用域 全局作用域 JavaScript 拥有函数作用域:每个函数创建一个新作用域。 作用域决定了这些变量可访问性... 注:不同函数中局部变量可以同名,因为在函数开始时创建局部变量,函数完成时就会删...
  • 1、变量函数变量函数又叫可变函数,php脚本在执行会寻找与变量的同名的函数并且去执行它,这样好处是可以不同的函数名称赋值给同一个变量,赋给变量那个函数名,在程序使用变量名加上圆括号就调用那个函数...
  • 需要向这个函数传其需要的参数,在函数调用时都会建立一个栈帧,通俗的讲栈帧就是一块空间,这块用来存函数调用中需要的一些值,比如局部变量,参数…,因此,在不同函数中可以定义同名的变量。   在图中main...
  • 可以调用不同派生层次中的display函数,只需在调用前给指针变量 pt 赋以不同的值(使之指向不同的类对象)即可。 打个比方,你要去某一地方办事,如果乘坐公交车,必须事先确定目的地,然后乘坐
  • extern作用总结 extern int i; 指明这里i只是声明,否则i为... 将函数"在其他地方定义"变为显式 同名常量可以出现在不同的编译单元,且值可以不一样哦! //------foo.c-------- const char name = h; //--
  • 人们提出这样的设想,能否用同一个...”可以调用不同派生层次中的display函数,只需在调用前给指针变量 pt 赋以不同的值(使之指向不同的类对象)即可。 虚函数的作用是允许在派生类中重新定义与基类同名函数,并且可以
  • java中的构造函数

    2021-01-13 23:03:14
    构造函数是一种特殊方法,主要用来在创建对象时对其进行初始化,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象语句。 一个类可以有多个构造函数,可根据其参数个数或参数类型不同来区分它们...
  • 全局变量Global Variable全局变量会降低程序可读性!...局部变量Local Variable不同的函数及作用域中可以使用相同名字局部变量,它们在内存分属不同的存储区间,互不干扰。复合语句作用大家都知道 ca...
  • C/C++静态成员变量和静态成员函数

    千次阅读 2010-10-19 22:12:00
    C中的静态变量和静态函数。(1)C中的静态变量是处于全局存储区,区别于自动变量的存储于栈中。两者的关键 区别是其作用域的区别。自动变量的作用域处于其所在的函数或语句块中;而静态 变量的作用域起始于其定义处,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 447
精华内容 178
关键字:

不同函数中的变量可以同名