这个问题在这里已经有了答案:
Don't understand why UnboundLocalError occurs (closure) [duplicate]
(8 个回答)
4年前关闭。
为什么这段代码会给出“UnboundLocalError: local variable 'num1' referenced before assignment”错误?
num1=50
def func():
print(num1)
num1=100
func()
最佳答案
另一个问题! python 。这是因为提升和可变阴影。如果在特定范围内有同名的局部变量和全局变量,则局部变量将遮蔽全局变量。此外,声明被提升到其范围的顶部。
因此,您的原始代码将如下所示:
num1=50
def func():
num1 = ... # no value assigned
print(num1)
num1=100
func()
现在,如果您尝试打印
num1
在没有为其分配任何值的情况下,它会抛出 UnboundLocalError
因为在您尝试取消引用它时,您没有将任何值绑定(bind)到变量。要解决此问题,您需要添加
global
表示 num1
的关键字是全局变量而不是局部变量。num1=50
def func():
global num1
print(num1)
num1=100
func()
关于python - 打印全局变量时Python中的UnBoundLocalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54508391/