码Python代码时,想用全局变量,报了错。所以上网查了相关文档,总结出 以下几点 :
函数内部的变量名如果 第一次 出现,且出现在 = 前面,则在该函数内部被视为定义一个局部变量。函数内部的变量名如果 第一次 出现,且出现在 = 后面,且该变量在全局域中已定义,则这里将引用全局变量(如果此时该变量在全局域中没有定义,则会报错 UnboundLocalError)。如果变量在 全局域 中和 局部域 中 都 有定义,则默认会使用局部变量。如果要在函数中给全局变量 赋值,需要用 global 关键字声明。代码段_0:
num = 100 def show(value): print 'id = %s' % id(value) def func_0(): temp = num show(temp) def func_1(): global num show(num) show(num) func_0() func_1()Output:
id = 30312368 id = 30312368 id = 30312368 Process finished with exit code 0代码段_1:
num = 100 def show(value): print 'id = %s' % id(value) def func_0(): temp = num show(temp) def func_1(): num += 1 show(num) show(num) func_0() func_1()Output:
Traceback (most recent call last): id = 28153776 File "/home/user/Desktop/temp.py", line 20, in <module> id = 28153776 func_1() File "/home/user/Desktop/temp.py", line 14, in func_1 num += 1 UnboundLocalError: local variable 'num' referenced before assignment Process finished with exit code 1