python闭包,看不懂请揍我

什么是闭包?

闭包就是一个个内嵌函数+内嵌函数里面引用了外部变量+返回这个内嵌函数(一般是这样)

为什么使用闭包?

有点类似与函数模板?。。
举一个实际的例子:

class people:
    name = ''
    has = []
    def __init__(self, name, has):
        self.name = name
        self.has = has

def chidongxi(people):
    def gochi():
        #还可做各种操作 - -
        print( people.name + '吃' + ','.join(people.has) )
    return gochi

p1 = people('why',['apple','banana','li'])
p2 = people('wj',['shi','haha','nishuone'])

z1 = chidongxi(p1)
z2 = chidongxi(p2)

z1()
z2()

这里有一个人的类,有名字name和他拥有的吃的has
吃东西这个方法,就是一个简单的闭包,他可以根据不同的人,拥有的不同的东西,进行吃的操作
其中,people 这个变量就是外部变量,gochishi()是内嵌函数(它使用了people)
我们看一下结果

why吃apple,banana,li
wj吃shi,haha,nishuone

好处:
1.封装
2.实现代码复用

参考:
[1]. python-闭包详解
[2]. [Python小记] 通俗的理解闭包 闭包能帮我们做什么?

如果我的文章帮到了你,请客官打个赏支持一下吧
     

猜你喜欢

转载自www.cnblogs.com/whyaza/p/10092464.html
今日推荐