新聞中心
對于這個問題,我想表達(dá)當(dāng)時聽到問題的心情,第一次聽到關(guān)于python這個閉包時候,內(nèi)心很是疑惑,大部分時候接觸的內(nèi)容都是字母,要不然就是函數(shù),語法,那什么是閉包呢?帶著這些疑問,于是梳理了以下內(nèi)容,大家趕緊看下吧。

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元安國做網(wǎng)站,已為上家服務(wù),為安國各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
閉包的定義:
在函數(shù)嵌套的前提下,內(nèi)部函數(shù)使用了外部函數(shù)的變量,并且外部函數(shù)返回了內(nèi)部函數(shù),我們把這個使用外部函數(shù)變量的內(nèi)部函數(shù)稱為閉包。
閉包的構(gòu)成條件
通過閉包的定義,我們可以得知閉包的形成條件:
l 在函數(shù)嵌套(函數(shù)里面再定義函數(shù))的前提下
l 內(nèi)部函數(shù)使用了外部函數(shù)的變量(還包括外部函數(shù)的參數(shù))
l 外部函數(shù)返回了內(nèi)部函數(shù)
簡單閉包的示例代碼
# 定義一個外部函數(shù)
def func_out(num1):
# 定義一個內(nèi)部函數(shù)
def func_inner(num2):
# 內(nèi)部函數(shù)使用了外部函數(shù)的變量(num1)
result = num1 + num2
print("結(jié)果是:", result)
# 外部函數(shù)返回了內(nèi)部函數(shù),這里返回的內(nèi)部函數(shù)就是閉包
return func_inner# 創(chuàng)建閉包實例 f = func_out(1) # 執(zhí)行閉包 f(2) f(3)
運(yùn)行結(jié)果:
結(jié)果是: 3 結(jié)果是: 4
閉包執(zhí)行結(jié)果的說明:
通過上面的輸出結(jié)果可以看出閉包保存了外部函數(shù)內(nèi)的變量num1,每次執(zhí)行閉包都是在num1 = 1 基礎(chǔ)上進(jìn)行計算。
實例項目案例:
需求: 根據(jù)配置信息使用閉包實現(xiàn)不同人的對話信息,例如對話:
張三: 到北京了嗎? 李四: 已經(jīng)到了,放心吧。
實現(xiàn)步驟說明
l 定義外部函數(shù)接收不同的配置信息參數(shù),參數(shù)是人名
l 定義內(nèi)部函數(shù)接收對話信息參數(shù)
l 在內(nèi)部函數(shù)里面把配置信息和對話信息進(jìn)行拼接輸出
功能代碼的實現(xiàn)
# 外部函數(shù)
def config_name(name):
# 內(nèi)部函數(shù)
def say_info(info):
print(name + ": " + info)
return say_info
tom = config_name("Tom")
tom("你好!")
tom("你好, 在嗎?")
jerry = config_name("jerry")
jerry("不在, 不和玩!")運(yùn)行結(jié)果:
Tom: 你好! Tom: 你好, 在嗎? jerry: 不在, 不和玩!
閉包案例說明:
閉包還可以提高代碼的可重用性,不需要再手動定義額外的功能函數(shù)。
好了,相信內(nèi)容足夠大家了解閉包了哦~如需了解更多python實用知識,點(diǎn)擊進(jìn)入PyThon學(xué)習(xí)網(wǎng)教學(xué)中心。
當(dāng)前名稱:創(chuàng)新互聯(lián)Python教程:如何掌握使用python里的閉包?
網(wǎng)站路徑:http://www.dlmjj.cn/article/dhjidid.html


咨詢
建站咨詢
