我很困惑...
为什么它们有不同的错误?
还是喜欢JavaScript?
print(val1) #NameError: name 'val1' is not defined
val1 = 20
def foo1():
print(val2) # NameError: name 'val2' is not defined
foo1()
def foo2():
print(val3) # UnboundLocalError: local variable 'val3' referenced before assignment
val3 = 20
foo2()
答案 0 :(得分:0)
因为最后一个在函数范围内对值进行了赋值,而python在调用print
之后检测到您对值进行了赋值。
在第二种情况下python找不到任何定义,并且在第一种情况下,因为您要在全局范围内将值分配给,因此它无法解析该值是否适用于先前的val
(因为不在本地范围内。