1. 程式人生 > >python閉包,看不懂請揍我

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小記] 通俗的理解閉包 閉包能幫我們做什麼?

如果我的文章幫到了你,請客官打個賞支援一下吧