返回函数中内部函数可以调用外部函数的参数和局部变量
def lazy_sum(*args):
s=0
def sum():
for i in args:
s+=i
return s
return sum()
f=lazy_sum(1,2,3,4,5)
UnboundLocalError Traceback (most recent call last)
<ipython-input-13-edb8b3a21012> in <module>
----> 1 f=lazy_sum(1,2,3,4,5)
<ipython-input-12-cb413ffcd78b> in lazy_sum(*args)
5 s+=i
6 return s
----> 7 return sum()
<ipython-input-12-cb413ffcd78b> in sum()
3 def sum():
4 for i in args:
----> 5 s+=i
6 return s
7 return sum()
UnboundLocalError: local variable 's' referenced before assignment
原内部函数不可以更改全局变量(在函数外部定义的变量即为全局变量)
解决方案:
将要使用的变量定义到函数内部