python局部变量和全局变量的问题

咧咧976 发布于 2016/03/02 21:25
阅读 145
收藏 0
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ cat -n test1.py
     1    a = 1
     2    def do_something():
     3        print a
     4    
     5    do_something()
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ python test1.py
1
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ cat -n test2.py
     1    a = 1
     2    def do_something():
     3        print a
     4        a = 3
     5    
     6    do_something()
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ python test2.py
Traceback (most recent call last):
  File "test2.py", line 6, in <module>
    do_something()
  File "test2.py", line 3, in do_something
    print a

UnboundLocalError: local variable 'a' referenced before assignment

为什么test2.py给a赋了一个值就出错了呢?

加载中
0
从前是菜鸟
从前是菜鸟

在内部函数中修改同名全局变量之前调用该变量,引发“UnboundLocalError”错误。

要先定义,再调用,而且对局部变量的修改不会影响全局变量的值。

a = 1
def do_something():
    a = 3
    print(a)
do_something()
print(a)



如果要修改全局变量,可使用 global

a = 1
def do_something():
    global a
    a = 3
    print(a)
do_something()
print(a)



返回顶部
顶部