以下代码无法运行: 它给出“ UnboundLocalError:赋值前引用的局部变量'p'”
p="hello"
def z():
if p == "hello":
p="2"
print(p)
z()
但是这段代码有效,我很困惑!在这两种情况下,我都在函数内分配一个变量。这应该是本地的,对吧? 上面的代码也应该打印 2。
p="hello"
def z():
p="2"
print(p)
z()
输出:“2”
这也有效
p="hello"
def z():
if p == "hello":
x="2"
print(x)
z()
输出 = 2
我不希望在分配错误之前引用局部变量“p”。
p
是一个全局变量,因为它是在全局范围内定义的。
要从非全局范围(例如您的函数)访问全局变量,您需要在使用它之前使用
global p
声明其用法。