首頁技術(shù)文章正文

Python閉包的作用【Python培訓(xùn)】

更新時(shí)間:2022-09-01 來源:黑馬程序員 瀏覽量:

  我們都知道,Python函數(shù)是支持嵌套的。如果在一個(gè)內(nèi)部函數(shù)中對外部函數(shù)作用域(非全局作用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就會(huì)被稱為閉包。閉包需要滿足如下三個(gè)條件:

  (1)存在于嵌套關(guān)系的函數(shù)中。

  (2)嵌套的內(nèi)部函數(shù)引用了外部函數(shù)的變量。

  (3)嵌套的外部函數(shù)會(huì)將內(nèi)部函數(shù)名作為返回值返回。

  為了讓讀者更好地認(rèn)識(shí)閉包,接下來,通過一個(gè)案例進(jìn)行講解,如例7-1所示。

  例7-1 閉包.py

# 外部函數(shù)
def outer(start=0):
    count = [start] # 函數(shù)內(nèi)的變量
    # 內(nèi)部函數(shù)
    def inner():
        count[0] += 1 # 引用外部函數(shù)的變量
        return count[0]
    # 返回內(nèi)部函數(shù)的名稱
    return inner
quote = outer(5)
print(quote())

  在例7-1中,第2~9行代碼定義了一個(gè)嵌套函數(shù)。其中,outer函數(shù)是外部函數(shù),,inner是內(nèi)部函數(shù)。

  在outer函數(shù)中,首先定義了一個(gè)表示列表的變量count(該列表只有一個(gè)元素),然后定義了一個(gè)inner函數(shù),最后將inner函數(shù)的名稱返回。

  在inner函數(shù)中,引用了外部函數(shù)定義的列表count,并對count的元素進(jìn)行修改,修改后的列表元素使用return返回。

  第10行代碼調(diào)用了外部函數(shù)outer,并將其返回的結(jié)果inner賦值給變量quote,這表明quote與inner一樣,引用的都是inner函數(shù)占用的內(nèi)存空間。

  第11行代碼調(diào)用了quote函數(shù),實(shí)際上就是調(diào)用inner函數(shù)。

  程序的運(yùn)行結(jié)果如圖7-1所示。

1662000664771_閉包示例.jpg

  圖7-1 運(yùn)行結(jié)果

分享到:

Java培訓(xùn)班課程javaee

Python培訓(xùn)機(jī)構(gòu)python大數(shù)據(jù)

web前端培訓(xùn)課程升級(jí)V8.5web

AI+設(shè)計(jì)培訓(xùn)課程ui

大數(shù)據(jù)培訓(xùn)課程cloud

軟件測試培訓(xùn)課程test

c

新媒體運(yùn)營培訓(xùn)netmarket

產(chǎn)品經(jīng)理培訓(xùn)課程pm

linux培訓(xùn)Linux

movies

智能機(jī)器人培訓(xùn)robot

電商視覺設(shè)計(jì)課程uids

AI

集成電路應(yīng)用開發(fā)(嵌入式)培訓(xùn)課程jdbc

在線咨詢 我要報(bào)名
和我們在線交談!