[英]Python weird variable scope issue
我的代码如下。
def test():
print num1
print num
num += 10
if __name__ == '__main__':
num = 0
num1 = 3
test()
执行上面的python代码时,我得到以下输出。
3
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "<stdin>", line 2, in test
UnboundLocalError: local variable 'num' referenced before assignment
我不知道为什么在测试方法中没有特别的数字。 这对我来说非常奇怪,我之前没有面对过这个问题。
注意:我使用的是python 2.7。
由于您在test
函数中分配给num
,因此python将其视为局部变量。 这就是为什么它会在分配之前抱怨你引用一个局部变量。
您可以通过明确声明num
为全局来解决此问题:
def test():
global num
print num1
print num
num += 10
if __name__ == '__main__':
num = 0
num1 = 3
test()
num
出现在test
定义内的赋值语句中。 这使num
成为局部变量。 由于范围确定是在编译时进行的,因此即使在赋值之前的print
语句中, num
也是局部变量。 那时, num
没有值,导致错误。 如果要访问全局值,则需要将num
声明为全局。 num1
没有此问题,因为您从不尝试分配给它。
def test():
global num
print num1
print num
num += 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.