Python的函數(shù)嵌套的使用方法
例子:
def re_escape(fn):
def arg_escaped(this, *args):
t = [isinstance(a, VerEx) and a.s or re.escape(str(a)) for a in args]
return fn(this, *t)
return arg_escaped
函數(shù)嵌套
python允許在定義函數(shù)的時(shí)候,其函數(shù)體內(nèi)又包含另外一個(gè)函數(shù)的完整定義,這就是我們通常所說的嵌套定義。為什么?因?yàn)楹瘮?shù)是用def語句定義的,凡是其他語句可以出現(xiàn)的地方,def語句同樣可以出現(xiàn)。
像這樣定義在其他函數(shù)內(nèi)的函數(shù)叫做內(nèi)部函數(shù),內(nèi)部函數(shù)所在的函數(shù)叫做外部函數(shù)。當(dāng)然,我們可以多層嵌套,這樣的話,除了最外層和最內(nèi)層的函數(shù)之外,其它函數(shù)既是外部函數(shù)又是內(nèi)部函數(shù)。
使用方法
spam = 99
def tester():
def nested():
global spam
print('current=',spam)
spam += 1
return nested
#注意:打印 print 那行的代碼調(diào)用是tester()()
#而不是tester().nested()
相關(guān)文章
Django中使用 Closure Table 儲(chǔ)存無限分級(jí)數(shù)據(jù)
對(duì)于數(shù)據(jù)量大的情況(比如用戶之間有邀請(qǐng)鏈,有點(diǎn)三級(jí)分銷的意思),就要用到 closure table 的結(jié)構(gòu)來進(jìn)行存儲(chǔ)。這篇文章主要介紹了Django中使用 Closure Table 儲(chǔ)存無限分級(jí)數(shù)據(jù),需要的朋友可以參考下2019-06-06Django怎么在admin后臺(tái)注冊(cè)數(shù)據(jù)庫表
這篇文章主要介紹了Django怎么在admin后臺(tái)注冊(cè)數(shù)據(jù)庫表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11python之關(guān)于數(shù)組和列表的區(qū)別及說明
這篇文章主要介紹了python之關(guān)于數(shù)組和列表的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05pandas如何獲取某個(gè)數(shù)據(jù)的行號(hào)
這篇文章主要介紹了pandas如何獲取某個(gè)數(shù)據(jù)的行號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python中的class_static的@classmethod的巧妙用法
python中的class_static的@classmethod的使用 classmethod的使用,主要針對(duì)的是類而不是對(duì)象,在定義類的時(shí)候往往會(huì)定義一些靜態(tài)的私有屬性,今天通過示例代碼看下classmethod的妙用2021-06-06