闭包内修改外部变量
闭包内修改外部变量
def func_out(num1):
def func_inner(num2):
num1 = num2 + 10
return func_inner
问题:在func_out
内中的num1
, 能够通过func_inner
内的num1 = num2 + 10
修改func_out
中num1
的值?
- 修改闭包内使用的外部函数变量用
nonlocal
关键字来完成
示例代码
def func_out(num1):
def func_inner(num2):
nonlocal num1
num1 = num2 + 10
print(num1)
func_inner(10)
print(num1)
return func_inner
# f = func_out(10)
# f(10)
func_out(10) # 运行结果输出10 20