python函数之闭包详解

先看看什么是闭包:以下例子中内部嵌套的函数及其对外部变量的引用共同组成了闭包

def aaa(x):
    def bbb(y):
        return x + y
    return bbb

c = aaa(8)
print(c)
d = c(10)
print(d)
# 运行结果:
<function aaa.<locals>.bbb at 0x7f888f3c5d90>  # 这就是闭包,也是个函数
18

闭包定义:闭包是有函数及其相关的引用环境组合而成的实体。
要理解这段定义就先要知道闭包产生的原因——在嵌套调用的函数中将运行结果相互隔离,避免同一种函数在多次到用中产生混乱,请看以下例子。

def aaa(x):
    sum = x
    def bbb():
        return sum + 1
    return bbb

c = aaa(8)
print(c())
d = aaa(10)  # 每次调用都会产生新的闭包并保存一个新的sum变量
print(d())
# 运行结果:
9  # 第一个函数调用结果
11  # 第二个调用结果,看见了吧,多次传参运行结果没有相互影响,这就是要封装成闭包的原因!

猜你喜欢

转载自blog.csdn.net/weixin_43269166/article/details/88047610