修改闭包内使用的外部变量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45166384/article/details/100067987

修改闭包内使用的外部变量的错误示例:

定义一个外部函数
def func_out(num1):

# 定义一个内部函数
def func_inner(num2):
    # 这里本意想要修改外部num1的值,实际上是在内部函数定义了一个局部变量num1
    num1 = 10
    # 内部函数使用了外部函数的变量(num1)
    result = num1 + num2
    print("结果是:", result)

print(num1)
func_inner(1)
print(num1)

# 外部函数返回了内部函数,这里返回的内部函数就是闭包
return func_inner

创建闭包实例

f = func_out(1)

执行闭包

f(2)

修改闭包内使用的外部变量的正确示例:

定义一个外部函数
def func_out(num1):

# 定义一个内部函数
def func_inner(num2):
    # 这里本意想要修改外部num1的值,实际上是在内部函数定义了一个局部变量num1
    nonlocal num1  # 告诉解释器,此处使用的是 外部变量a
    # 修改外部变量num1
    num1 = 10
    # 内部函数使用了外部函数的变量(num1)
    result = num1 + num2
    print("结果是:", result)

print(num1)
func_inner(1)
print(num1)

# 外部函数返回了内部函数,这里返回的内部函数就是闭包
return func_inner

创建闭包实例

f = func_out(1)

执行闭包

f(2)
2. 小结
#修改闭包内使用的外部函数变量使用nonlocal 关键字来完成。

猜你喜欢

转载自blog.csdn.net/qq_45166384/article/details/100067987