精华内容
下载资源
问答
  • Python 全局变量与global关键字

    万次阅读 多人点赞 2017-07-25 19:34:39
    Python 全局变量之谜​ 在Python的变量使用中,经常会遇到这样的错误:local variable 'a' referenced before assignment它的意思是:局部变量“a”在赋值前就被引用了。

    Python 全局变量与global关键字

    ​ 在Python的变量使用中,经常会遇到这样的错误:

    local variable 'a' referenced before assignment
    

    它的意思是:局部变量“a”在赋值前就被引用了。
    ​ 比如运行下面的代码就会出现这样的问题:

    a = 3
    def Fuc():
        print (a)
        a = a + 1
    Fuc()
    

    ​ 但是如果把 a = a + 1 这一句删除又不会出现上述问题了

    a = 3
    def Fuc():
        print (a)
    Fuc()
    

    ​ 原来,在Python中,a=3 定义了全局变量a,作用域从定义处到代码结束,在 a=3 以下的函数中是可以引用全局变量a的,但如果要修改函数中与全局变量同名的变量,则函数中的该变量就会变成局部变量,在修改之前对该变量的引用自然会出现未分配或未定义的错误了。

    ​ 如果确定要引用并修改全局变量必须加上global关键字

    a = 3
    def Fuc():
    	global a
        print (a)
        a=a+1
    Fuc()
    

    ​ 注意要领:哪个函数需要修改全局变量,在函数中声明一下即可。

    ​ 但在 if _name_ == “main”:下,全局变量是一直保持的

    a = 3
    def Fuc():
        global a
        print (a)  # 1
        a = a + 1
    if __name__ == "__main__":
        print (a)  # 2
        a = a + 1
        Fuc()
        print (a)  # 3
    

    ​ 输出如下(Python3环境下):

    3
    4
    5
    

    三个print执行的顺序为:2, 1, 3 。

    人生苦短,我用Python~

    展开全文
  • python全局变量

    千次阅读 2020-09-01 16:32:06
    1.全局变量 2.python全局变量 3.Python全局变量的用法 4.Python全局变量实质

    1.全局变量

             在计算机中,一切数据都可以当作变量。理论上讲,变量可以分为几种类型:

             1)全局变量;

             2)静态变量;

             3)常量;

             4)栈变量;

             5)堆变量。

             这些变量的不同在于作用域和生命周期是不同的。对于其中的全局变量来说,必须要注意是,其作用域属于全部,生命周期存在于进程整个时期。

    2.python的全局变量

           以前笔者写过一篇博客,是有关Golang语言的全局变量的(https://blog.csdn.net/wangzhezhilu001/article/details/91493594)。Golang中,全局变量属于包。在python中,全局变量的生命也属于模块(表现为单个python文件),而不是整个进程。

          可以通过如下程序验证。先提供一个文件A.py

              

    # A.py
    
    # ---- coding=utf-8--A--#
    
    
    def f(a):
        print(a)
    
    def main():
        global a
    
        a = 5
        f(a)
    
    if __name__ == '__main__':
        main()

         再加上另一个调用程序B.py。

       

    # B.py
    
    # ---- coding=utf-8----#
    
    from A import f
    
    
    def main():
        global a
       
        f(a)
    
    if __name__ == '__main__':
        main()

           运行B.py,发现程序报错。会提示程序变量a不存在。其原因在于,全局变量a并未定义,而B文件的全局变量a的作用域和生命空间只属于B文件。

    3.Python的全局变量的用法

           python的全局变量的用法为:1)python的全局变量的作用域为特定模块之内;2)在函数内,如不加global关键字,则该变量为局部变量,如该变量未声明,如对变量进行修改,会出问题。

           测试程序如下所示:

          

    # C.py
    
    # ---- coding=utf-8----#
    
    a = 2
    
    
    def f(a):
        print(a)
    
    def main():
       a += 1
       f(a)
    
    if __name__ == '__main__':
        main()
    

         该方法会提示a为本地变量。

          要想使用,必须在函数内提供global关键字,才会让global变量起作用。

      

    # C.py
    
    # ---- coding=utf-8----#
    
    a = 2
    
    
    def f(a):
        print(a)
    
    def main():
       global a
    
       a += 1
       f(a)
    
    if __name__ == '__main__':
        main()
    

    4.Python的全局变量实质

          python的全局变量的实质是:python在程序运行时,提供了一个__globals__字典,__globals__字典属于模块,并把全局变量放入字典里。这种方式,决定了python的全局变量不属于进程而属于模块。

    展开全文
  • python 全局变量

    2019-09-11 11:33:12
    python全局变量释疑 python全局变量 是定义在函数之外的变量 函数可以使用全局变量的值 但是如果想在函数里改变全局变量的值 需要提前声明 这三句话不好理解 直接上代码 示例一 num = 0 #定义在函数以外 ...

    python全局变量释疑

    python全局变量 是定义在函数之外的变量
    函数可以使用全局变量的值
    但是如果想在函数里改变全局变量的值 需要提前声明
    这三句话不好理解 直接上代码

    • 示例一
    num = 0 #定义在函数以外 对于函数来说 这就是全局变量
    
    def test():
        a = 1
        num = a + 2 #函数会认为这是局部变量num 而不是全局变量num 
        print(num)
    
    test()
    print(num)
    

    结果为
    3
    0
    第一个结果是函数里的print(num),因为这个num在函数test里被赋值,函数会认为这是属于函数自己的局部变量,所以运算结果为2.
    第二个结果打印的是全局变量num,并没有被函数引用,所以也没有变化

    • 示例二
    num = 0 #定义在函数以外 对于函数来说 这就是全局变量
    
    def test():
        num = num +1 
        print(num)
    
    test()
    

    运行上边代码会报错:

    UnboundLocalError: local variable 'num' referenced before assignment
    

    意思是变量num 在赋值之前被使用,为什么会这样,看下边的例子

    • 示例三
    num = 0 #定义在函数以外 对于函数来说 这就是全局变量
    
    def test():
        x = num +1 #函数在内部没有找到被赋值的变量num,就去全局变量里找num,所以此处的num为引用的全局变量num值为0, X是此函数的局部变量
        print(x)
    
    test()
    print(num)#打印全局变量的值
    

    运行这个代码 能得到结果
    1
    0
    从这里可以看出,全局变量num被函数test()引用了,并参加了计算得到一个新的值付给了函数的局部变量X。

    • 示例四
    num = 0 #定义在函数以外 对于函数来说 这就是全局变量
    
    def test():
        global num #声明函数里使用的num 是全局变量
        num = num +1 #此函数里没有定义变量num 所以直接调用全局变量里的num
        print(num)
    
    test()
    print(num)#在函数里经过了声明 全局变量的 值也被改变了 此时num =1
    

    这个代码也能够成功运行 结果为
    1
    1
    在函数里使用关键字 global 声明过全局变量之后,在对其进行运算,全局变量的值会被改变

    • 示例五
    num = 0 #定义在函数以外 对于函数来说 这就是全局变量
    
    def test():
        num = num +1 #此函数里没有定义变量num 所以直接调用全局变量里的num
        global num #声明全局变量
        print(num)
    
    test()
    print(num)
    

    这个运行也会报错

    SyntaxError: name 'num' is used prior to global declaration
    

    意思是全局变量num在声明之前被使用
    跟示例二的报错还不一样,因为这里虽然声明了,却是在使用之后声明的,也是不对的。应该在使用之前被声明

    • 结论
      由示例二能看出,函数在遇到没被赋值的变量时,会自己去全局变量里找,并把其值导入函数参与运算,但如果想要改变全局变量的值,使用前必须要在函数里进行声明,声明这个变量是全局变量。
    展开全文
  • Python全局变量

    2018-06-26 17:05:28
    python 中的不同 会优先使用局部变量,如果想优先使用全局变量 需要使用 global 关键字 """ num = 100 def fun2() : #global 声明num是全局变量 #global num num = 200 print("函数后 %s&...
    """
    python 中的不同 会优先使用局部变量,如果想优先使用全局变量 需要使用 global 关键字
    
    """
    num = 100
    
    def fun2() :
        #global 声明num是全局变量
        #global num
        num = 200
        print("函数后 %s" % num)
    fun2()
    print(num)

    运行结果:

    函数后 200
    100

    这个和java中的结果不一样

    python中,如果局部变量个全局变量同名,会优先使用局部变量

    如果想要操作全局变量,需要在函数内 用 global 关键字 声明该变量是全部变量

    num = 100
    
    def fun2() :
        #global 声明num是全局变量
        global num
        num = 200
        print("函数后 %s" % num)
    fun2()
    print(num)

    运行结果:

    函数后 200
    200

    展开全文
  • python全局变量的使用

    万次阅读 2017-04-05 20:11:44
    python全局变量
  • 这篇文章主要介绍了Python全局变量与局部变量区别及用法,结合实例形式分析了Python全局变量与局部变量的定义、常见用法、区别及相关操作注意事项,需要的朋友可以参考 本文实例讲述了Python全局变量与局部变量区别及...
  • python全局变量和局部变量的区别 全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部),则...
  • Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,下面介绍下Python全局变量有关问题。 应该尽量避免使用Python全局变量。不同的模块都...
  • 这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解一下作用...
  • python全局变量及global的使用 python中全局变量使用,一般有两种方法,使用global和使用模块 global 在python中,可以使用global声明一个变量为全局变量 1. flag=1 def test(): global flag flag=2 print("test:...
  • python 全局变量global

    万次阅读 2016-06-03 15:12:48
    在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下...
  • python全局变量-局部变量区别及用法

    万次阅读 多人点赞 2017-11-13 11:12:36
    python里面全局变量和局部变量的区别就常用情况
  • 全局变量:定义在函数外的变量称之为全局变量,他的作用域范围为全局。 所谓的全局变量跟局部变量主要是针对函数内外而言的。 全局变量 a = "python" # 函数外定义的a为全局变量 def func1(): ...
  • Python全局变量的隐藏“窍门”

    千次阅读 2015-03-02 19:28:08
    Python全局变量是不符合参数传递的相关规律,所以很多人不愿意经常使用,除非在定义常量的情况下。一下要讨论的是关于全局变量的相关问题,发现其中隐藏的窍门。希望大家通过这篇文章有所收获。 程序大致是这样的...
  • python全局变量使用

    千次阅读 2017-08-21 19:34:28
    应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现...
  • Python全局变量说明

    2018-05-21 03:25:41
    1、全局变量是位于文件内部的顶层的变量名2、全局变量如果在函数内被赋值的话必须经过声明3、全局变量在函数内部不经过声明也可以被引用。例:num = 1 def foo1(): ''' foo1只是引用全局变量num,无需声明 ''' ...
  • ... # 在 python 中,是不允许直接修改全局变量的值 # 如果使用赋值语句,会在函数内部,定义一个局部变量 gl_num1 = 99 # 定义局部变量,并没有使用外部的全局变量. print("gl_num1...
  • #全局变量与局部变量num = 90 #全局变量def de(): global num #修改全局变量为30 num=30 def df(): print(num)df()结果:90 ------------------------------分割线------------------------------------------...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,397
精华内容 58,958
关键字:

python全局变量

python 订阅