Python: 全局变量 & 局部变量的使用

xiaoxiao2021-02-28  99

  码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

成功地印证了上面的四条。



转载请注明原文地址: https://www.6miu.com/read-37808.html

最新回复(0)