函数local variable referenced before assignment
求教大神们!def funB():
num = 0
def funA():
num = 1 + 1
return num
return funA
或者
def funB():
num = 0
def funA():
temp = num + 1
return num
return funA
都不会出错,而这样写就会出错,为什么呢?
def funB():
num = 0
def funA():
num = num + 1
return num
return funA
a = funB()
a()
会出错。local variable 'num' referenced before assignment
因为你给 num 赋值的话就说明 num 是一个局部变量,但是局部变量不能在赋值之前使用
num = num + 1 是先完成右边的计算再赋值给左边,也就是你的 num 在赋值之前使用了,所以报错,
你得在 num = num + 1 之前加一个 nonlocal num 来说明 num 不是局部变量
def funB():
num = 0
def funA():
nonlocal num
num = num + 1
return num
return funA
a = funB()
a()
页:
[1]