为啥代码A不报错代码B却报错
代码A:def outside():
var = 5
def inside():
var = 3
print(var)
inside()
outside()
代码B
def outside():
var = 5
def inside():
print(var)
var = 3
inside()
outside() 因为在inside()函数中print(var)在var前面,所以print(var)里的var它没有找到,就报错了。 因为在inside()函数中print(var)在var前面,因此var没有被定义,但是如果你在print(var)前面加上global var,表示该函数内的var使用的是全局变量,这样也不会报错。 achun 发表于 2018-3-5 15:42
因为在inside()函数中print(var)在var前面,因此var没有被定义,但是如果你在print(var)前面加上global var ...
测试了一下,这样好像不行,这种是闭包,这样处理不行,对不起,误导你了 achun 发表于 2018-3-5 15:47
测试了一下,这样好像不行,这种是闭包,这样处理不行,对不起,误导你了
但是可以将global改成nonlocal就可以了 achun 发表于 2018-3-5 15:49
但是可以将global改成nonlocal就可以了
非常感谢
页:
[1]