精华内容
下载资源
问答
  • 全局变量和局部变量

    2019-07-29 17:41:39
    全局变量和局部变量 在类中中定义的属性(变量),就是全局变量,全局变量是由默认值,可以不赋值而直接使用 int 默认值是 0 String 默认值是 null 引用数据类型的变量默认值都是null 局部变量:定义在方法中的变量,...

    全局变量和局部变量

    在类中中定义的属性(变量),就是全局变量,全局变量是由默认值,可以不赋值而直接使用
    int 默认值是 0
    String 默认值是 null
    引用数据类型的变量默认值都是null

    局部变量:定义在方法中的变量,循环中的变量,判断中的变量都是局部变量,局部变量没有默认值,必须先赋值才能使用
    如果全局变量和局部变量同名,则局部变量的优先级高于全局变量
    如果想要在存在同名局部变量的方法中使用全局变量,则需要通过this.来区分全局变量和局部变量

    public int age;   //全局变量
    	public void vabtest(){
    		int temp =20;
    		//name,age,为属性(又称之为全局变量,存在默认值)
    		System.out.println("name:" + name);
    		System.out.println("age:" + age);
    		System.out.println("temp:" + temp);  //temp作为局部变量,必须赋值才能使用
    		//如果全局变量和局部变量同名,则局部变量的优先级高于全局变量
    		int age =20;
    		System.out.println("age:" + age);
    		//如果想要在存在同名局部变量的方法中使用全局变量,则需要通过this.来区分全局变量和局部变量
    		System.out.println("局部age: " + age +",全局age:"+this.age);
    	}
    
    
    展开全文
  • python中全局变量和局部变量详解

    万次阅读 多人点赞 2018-11-13 12:18:46
    python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。 !!! 我们先来看一个最简单的例子,事实上这并不是一个真正的全局变量,只是在类中的一个变量。 !!! 我们...

    写在最前面:

    python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。

    !!!

    我们先来看一个最简单的例子,事实上这并不是一个真正的全局变量,只是在类中的一个变量。

    !!!

    我们先从类中的变量访问开始讲起

    那么我们要如何访问这个变量呢?

    class variable:
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(a)
            print(b)
    
    
    variable().showvarible()

    毫无疑问,编译器就已经报错了,这是因为类中的变量不可以在函数中直接访问,应该这样

    class variable:
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(variable.a)
            print(b)
    
    
    variable().showvarible()
    我是类变量
    我是函数变量
    

    其实我们还可以通过self去访问

    class variable:
    
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(self.a)
            print(b)
    
    
    variable().showvarible()

     结果是一样的

    我是类变量
    我是函数变量

     

    还可以怎么做呢,我们通过构造函数给定一个参数,类中可访问

    class variable:
    
        def __init__(self,a):
            self.a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(self.a)
            print(b)
            
    
    
    variable(1).showvarible()
    我是类变量
    我是函数变量

     这里需要注意的是,实例化的时候必须给参数,由于python是动态语言,不需要指定参数的类型,你可以放int,比如1,也可以给一个字符串。 

     

    然后我们真正看一下全局变量

    a = '我是真正的全局变量'
    
    
    def showvariable():
        b = '我一直都是局部变量'
        print(a)
        print(b)
    
    
    showvariable()
    我是真正的全局变量
    我一直都是局部变量
    

     

    当我们试图在函数外访问这个函数的局部变量时

    a = '我是真正的全局变量'
    
    
    def showvariable():
        b = '我一直都是局部变量'
        print(a)
    
    def showb():
        print(b)
    
    
    showvariable()

    报错

    我是真正的全局变量
    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 13, in <module>
        showb()
      File "F:/leetcode/xxx.py", line 9, in showb
        print(b)
    NameError: name 'b' is not defined
    

    说明局部变量只能在局部使用。

    那么不巧的是,我的局部变量和全局变量定义了同一个名称,谁的优先级更高呢?

    a = '我是真正的全局变量'
    
    
    def showvariable():
        a = '我一直都是局部变量'
        print(a)
    
    
    print(a)
    showvariable()

    我猜是局部变量,嘿嘿

    我是真正的全局变量
    我一直都是局部变量

    果然,函数优先使用了局部变量

    而优先级还有一个体现,来看下面的例子

    a = 3
    
    
    def showvariable():
        a = a * 5
        print(a)
    
    
    showvariable()

    你可能会认为输出15,但是上面的一个例子告诉我们,在函数内会优先使用局部变量

    3
    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 10, in <module>
        showvariable()
      File "F:/leetcode/xxx.py", line 5, in showvariable
        a = a * 3
    UnboundLocalError: local variable 'a' referenced before assignment
    

    这样是因为,我们在函数内定义了一个局部变量a,但是还没来得及赋值,就被*5,编译器不知道拿谁去*5,当然报错了。

     

    下面讲讲global,global第一次是只能定义不能赋值的

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    
    showvariable()
    我是global

    当然是可以在函数外访问的

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    def showglobal():
        print(a)
    
    showvariable()
    showglobal()
    我是global
    我是global

    但是,必须赋值后才有意义,如果像这样

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    def showglobal():
        print(a)
    
    print(a)
    showvariable()
    showglobal()

    在没有赋值的时候,就去打印

    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 9, in <module>
        print(a)
    NameError: name 'a' is not defined
    

    因为此时global a还没有赋值,当然不能打印。

    展开全文
  • Python的全局变量和局部变量

    万次阅读 多人点赞 2018-05-13 13:38:40
    学编程的总离不开全局变量和局部变量,那么,首先我们要知道局部变量和全局变量的定义: 局部变量:定义在函数内部的变量称为局部变量,他的作用域范围为函数内,也就是出了函数外就无效。举个简单的例子:葫芦娃在...

    学编程的总离不开全局变量和局部变量,那么,首先我们要知道局部变量和全局变量的定义:

            局部变量:定义在函数内部的变量称为局部变量,他的作用域范围为函数内,也就是出了函数外就无效。举个简单的例子:葫芦娃在国内基本大家都认识他,大家一看到他就会知道,咦,那是葫芦娃。但是一旦出了国外,就没有人认识他了,葫芦娃的作用域范围为国内。

            全局变量:定义在函数外的变量称之为全局变量,他的作用域范围为全局。再举个例子:如果把函数比作国家,那么全局就是全球,全局变量就像是阿拉伯数字,你去到哪,大家都认识。

            由上面的定义可以看出,所谓的全局变量跟局部变量主要是针对函数内外而言的。

            我们接下来举个简单的例子说明全局变量跟局部变量在实际应用中的区别:

    a = "python"   # 函数外定义的a为全局变量
    def func1():
       print (a)
    def func2():
       b = "小黑屋"  # 函数内定义的b为局部变量
       print (b)
    func1()          # 执行函数func1
    func2()          # 执行函数func2
    print(b)         # 输出函数func2中的局部变量b
    >>python         # 函数func1执行后输出全局变量a
    >>小黑屋          # 函数func2执行后输出局部变量b
                    # 在函数外输出局部变量b,出现了未定义的报错

    Traceback (most recent call last):
     File "<pyshell#11>", line 1, in <module>
       print(b)
    NameError: name 'b' is not defined

             由上面的例子可以看出,局部变量只能在函数内部使用,而全局变量是全局范围内都能引用。

             但如果在函数内定义了一个跟全局变量一样名字的变量,这时候会怎样呢?请看例子:

    a = "python"
    def func1():
       a = '小黑屋'
       print (a)
    def func2():
       print(a)
    func1()
    func2()
    print (a)
    >>小黑屋
    >>python
    >>python

            由上可知,当你在函数内定义一个与全局变量一样名字的变量时,相当于你在函数内重新定义了一个局部变量,为什么这样说呢,因为你会发现,你在函数内重新定义这个变量后,无论你在函数内怎样改动这个函数的值,只有在函数内生效,对全局来说是没有任何影响的。也可以从侧面推测出,函数内定义的局部变量优先级大于全局变量。

            既然全局变量这么好用,那我们在函数中就可以随意的使用全局变量了吧?真的是这样吗?

            

    a = 6         # 定义全局变量a
    def func():
       a = a * 3
       print (a)
    func()
    >>Traceback (most recent call last):
     File "<pyshell#26>", line 1, in <module>
       func()
     File "<pyshell#25>", line 2, in func
       a = a * 3
    UnboundLocalError: local variable 'a' referenced before assignment
    a = a * 3
    print (a)
    >>18

            咦,函数内的操作怎么报错了,函数外的同样的操作怎么就没有报错?什么鬼?原来,在python的函数中=号左边表示定义了一个局部变量,待赋值,而上面的例子中就相当于你定义了一个局部变量a,但你还没赋值就拿来进行运算,自然就会报错了。所以,全局变量中在函数中使用的时候也要注意下避免出现这样的情况,你要拿来运算的时候完全可以再定义另外一个变量如b = a*3 这样就完全没问题了。

             上面我们举了葫芦娃的例子,或许有人会说,你举的例子不够全面,我们国内也有像成龙这样的巨型走到了全球,全世界都认识他。那我们函数内是否也会有这样的定义呢?能够出现全局变量?我们继续看例子:      

    def func():
       global a        # 利用global关键词定义全局变量
       a = "python小黑屋"
       print (a)
    print(a)        
    >>NameError: name 'a' is not defined   # 你在逗我吗?报错了?
    func()
    print (a)                              # 咦,怎么又不报错了
    >>python小黑屋
    >>python小黑屋

              大家可能会感到奇怪,为什么我在函数内定义了一个全局变量,但是第一次打印的时候确报错,但在执行了函数func()之后又不报错了呢?

              首先,Python在函数中定义全局变量的关键字为global,加了global就是全局变量了,但是用global定义全局变量的时候不能同时赋值,要在下一行才能赋值。其次,在函数中定义了全局变量后,要这个函数执行了,全局变量才生效,就像你很才,但不展示出来谁知道你有才(也就你自己知道了)。

            这个时候,可能又有人有问题要提问了,如果我在函数func1()中定义一个局部变量a,然后在函数func1()中再写一个函数func2(),那我在func2()中可以引用func1()的a吗?事实上是可以的。

    def func1():
       a = "python小黑屋"
       def func2():
           print (a)
       return func2()
    func1()
    >>python小黑屋

              其实这就像函数引用全局变量一样,函数也可以引用上一级函数的变量。但同理,直接在=左边重定义的变量的话就会又报错。但是,python3不知为何提供了一个方法,可以使你直接引用又不会报错:

    def func1():
       a = "python小黑屋"
       def func2():
           nonlocal a   # 使用nonlocal不是局部变量
           a = a * 3    # 这个是上次字符串忘记说的,字符串*数字是重复字符串
           print (a)
       return func2()
    func1()
    >>python小黑屋python小黑屋python小黑屋

              只要你使用了关键字nonlocal他就能获取你上一级函数的局部变量a,获取不到就再获取上一级函数的变量a,当然,只限函数外,如果最外面的函数也还是没有的错,那就会报错了。

              这个技能的好处应该是如果你内层函数需要引用到外部函数的局部变量时不用再定义一次,能节省点系统资源吧。

    欢迎大家关注我的微信公众号Python小黑屋

    python学习资源/有趣的python文章/python学习笔记


    展开全文
  • java 全局变量和局部变量 重点内容 1. 全局变量作用于整个class而局部变量只作用于方法体中,当全局变量和局部变量同名是就近原则 public class Test { //java全局变量和局部变量 public static void main...

    java 全局变量和局部变量

    重点内容


    1. 全局变量作用于整个class而局部变量只作用于方法体中,当全局变量和局部变量同名是就近原则

    public class Test {
       //java全局变量和局部变量
        public static void main(String[] args) {
            int a=2;
            add(1,2);
        }
        private static void add(int i, int j) {
            int a=i+j;
            System.out.println(a);  
        }
    
    }
    结果:3

    展开全文
  • 有很多朋友经常问我一些关于全局变量和局部变量的问题,今天抽点时间给大家简要阐述下关于全局变量和局部变量的一些问题。1、全局变量:顾名思义,就是对于整个程序都可以使用的变量,任何地方可以使用的变量,当然...
  • 学习过任何一门语言后,你都会接触到全局变量和局部变量,就相当于全国的法律和地方法律,在jmeter中,线程组A设置了全局变量和局部变量,那么在线程组B中只能使用全局变量,而不能使用局部变量。如何设置全局变量和...
  • 在c语言中,变量有全局变量和局部变量之分,这一点和很多高级语言类似,如c#,java等。不过与c#,java中的局部变量如在全局变量作用域内则不允许与全局变量名相同,而c语言是允许这样做的。这样的做法极不提倡,但是...
  • python3 全局变量和局部变量

    万次阅读 2018-08-10 14:37:56
    全局变量和局部变量 局部变量: 1.定义在函数内部的变量称为局部变量(函数的形参也是局部变量) 2.局部变量只能在函数内部使用 3.局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁 全局变量: 1.定义...
  • 全局变量和局部变量初始化问题

    千次阅读 2019-08-23 16:08:42
    现在,我们要讨论的是程序猿或者程序媛需不需要给全局变量和局部变量赋初值的问题。因为全局变量的初始值是系统默认的且是可使用的,因此,全局变量一般不需要自己去赋初值,不过为了养成良好的代码习惯,最好还是赋...
  • js全局变量和局部变量
  • java 全局变量和局部变量的区别

    千次阅读 2018-08-03 20:49:58
    全局变量和局部变量的简介: 1、全局变量:描述对象有什么(在类中定义),类中所有方法都可以使用。 2、局部变量:临时保存数据(在类的方法中定义),只能在当前方法中使用。 全局变量和局部变量的区别: 1、作用...
  • Python之全局变量和局部变量

    千次阅读 2018-07-18 11:55:14
    Python之全局变量和局部变量 1. 变量 变量:临时存储数据的容器:工具! 生活:私有的工具;公有的工具; 2. 变量类型 所有人都可以使用的:全局变量 只有当前函数可以使用的变量:局部变量 3. 声明全局...
  • java全局变量和局部变量的区别

    千次阅读 2020-06-28 21:39:21
    java全局变量和局部变量 全局变量 全局变量又称实例变量,属性,成员变量。 位置 定义在类中,属于类中的一个成员 作用范围 因为全局变量是定义在类中的,所以可以使用四种访问权限控制修饰符修饰,但是不论使用哪种...
  • 1.成员变量和局部变量:通常将类的属性称为类的全局变量(成员变量... 举个例子说明全局变量和局部变量: public class Test{ static int times=3;//全局变量 public class static void main(String[] args){ in
  • 全局变量和局部变量 什么是全局变量  类的属性称之为全局变量,也称之为类的成员变量,字段 什么是局部变量  局部变量是定义在方法体,或者代码块中的变量,参数是特殊的局部变量 全局变量和局部变量的区别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,699
精华内容 9,479
关键字:

全局变量和局部变量