打印全局变量时Python中的UnBoundLocalError

时间:2017-06-20 06:10:55

标签: python

为什么此代码在赋值'错误之前引用'UnboundLocalError:局部变量'num1'?

{{1}}

1 个答案:

答案 0 :(得分:1)

另一个问题! python。这是因为提升变量阴影。如果在特定范围内具有同名的本地和全局变量,则局部变量将影响全局变量。此外,声明被提升到其范围的顶部。

所以你的原始代码看起来像这样:

num1=50
def func():
   num1 = ... # no value assigned
   print(num1)
   num1=100
func()

现在,如果您尝试打印num1而没有为其分配任何值,则会抛出UnboundLocalError,因为您当时没有绑定任何值到该变量你试图取消引用它。

要解决此问题,您需要添加global关键字,以表示num1是全局变量,而不是本地变量。

num1=50
def func():
   global num1
   print(num1)
   num1=100
func()