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