Python閉包的使用方法
1.閉包的定義和使用
當(dāng)返回的內(nèi)部函數(shù)使用了外部函數(shù)的變量就形成了閉包
閉包可以對(duì)外部函數(shù)的變量進(jìn)行保存,還可以提高代碼的可重用性
實(shí)現(xiàn)閉包的標(biāo)準(zhǔn)格式:
- 1.函數(shù)嵌套
- 2.內(nèi)部函數(shù)使用外部函數(shù)的變量或參數(shù)
- 3.外部函數(shù)返回了內(nèi)部函數(shù)
'''
當(dāng)返回的內(nèi)部函數(shù)使用了外部函數(shù)的變量就形成了閉包
閉包可以對(duì)外部函數(shù)的變量進(jìn)行保存,還可以提高代碼的可重用性
實(shí)現(xiàn)閉包的標(biāo)準(zhǔn)格式:
? ? 1.函數(shù)嵌套
? ? 2.內(nèi)部函數(shù)使用外部函數(shù)的變量或參數(shù)
? ? 3.外部函數(shù)返回了內(nèi)部函數(shù)
'''
?
# 定義一個(gè)閉包
def outer(): ? ?# 外部函數(shù)
? ? n=1
? ? def inner(): ? ?# 內(nèi)部函數(shù)
? ? ? ? print(n)
? ? # 外函數(shù)返回內(nèi)函數(shù)的引用(不用帶括號(hào)哈)
? ? return inner
?
outer() # 調(diào)用外函數(shù)不會(huì)執(zhí)行內(nèi)函數(shù)
# inner() # 不能直接調(diào)用內(nèi)函數(shù)
ret=outer() # 把內(nèi)函數(shù)的引用給ret
print(ret)
ret()
?
# 閉包的使用
def person(name):
? ? def say(msg):
? ? ? ? print(f'{name} say: ?{msg}')
? ? return say
?
tom=person('Tom')
rose=person('Rose')
tom('Hello')
rose('World')2.閉包內(nèi)函數(shù)修改外函數(shù)定義的變量(加nonlocal)
def outer(): ? ? n=1 ? ? def inner(): ? ? ? ? nonlocal n ?# 不加會(huì)報(bào)錯(cuò),列表、字典、元祖不用加 ? ? ? ? n=n+10 ? ? ? ? print(n) ? ? print(n) ? ?# 輸出1 ? ? return inner ? fun=outer() fun() ? # 輸出11 fun() ? # 輸出21
到此這篇關(guān)于Python閉包的使用方法的文章就介紹到這了,更多相關(guān)Python閉包 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python區(qū)塊鏈范圍結(jié)論及Genesis Block的添加教程
這篇文章主要為大家介紹了Python區(qū)塊鏈范圍結(jié)論及Genesis Block的添加,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python:目標(biāo)檢測(cè)模型預(yù)測(cè)準(zhǔn)確度計(jì)算方式(基于IoU)
今天小編就為大家分享一篇python:目標(biāo)檢測(cè)模型預(yù)測(cè)準(zhǔn)確度計(jì)算方式(基于IoU),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié)
這篇文章主要介紹了關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié),Series序列,是一種一維的結(jié)構(gòu),類似于一維列表和ndarray中的一維數(shù)組,但是功能比他們要更為強(qiáng)大,Series由兩部分組成:索引index和數(shù)值values,本篇對(duì)其用法做出總結(jié)2023-07-07
python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法
今天小編就為大家分享一篇python+opencv 讀取文件夾下的所有圖像并批量保存ROI的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python 比較兩個(gè) CSV 文件的三種方法并打印出差異
這篇文章主要介紹了Python 比較兩個(gè) CSV 文件并打印出差異,本文將討論比較兩個(gè) CSV 文件的各種方法,我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡(jiǎn)化此任務(wù)的外部 Python 模塊,需要的朋友可以參考下2023-06-06
聊聊Numpy.array中[:]和[::]的區(qū)別在哪
這篇文章主要介紹了在Numpy.array中[:]和[::]的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05

