先输入1来修改num1,再输入2来获取刚刚修改的外部变量,发现修改失败
def func_out(i,num1):
def test():
return num1
def func_inner(num2):
nonlocal num1
num1=num2+100
print(num1)
if i==1:
return func_inner
else :
num=test()
print(num)
while True:
i=int(input("输入值"))
f=func_out(i,10)
f(3)
因为你每次调用func_out函数时,都会重新创建内部函数并返回所以输入2的时候,内部函数初始值是没变化的