Python——nonlocal語句

nonlocal介紹

  • nonlocal聲明了將要在一個(gè)嵌套的作用域中修改的名稱像啼。nonlocal應(yīng)用于一個(gè)嵌套的函數(shù)的作用域中的一個(gè)名稱潭苞,而不是所有def之外的全局模塊作用域
  • 在聲明nonlocal名稱的時(shí)候,必須已經(jīng)存在于該嵌套函數(shù)的作用域中僧诚,它們只可能存在于一個(gè)嵌套的函數(shù)中振诬,并且不能由一個(gè)嵌套的def中的第一次賦值創(chuàng)建
  • nonlocal 意味著定義的變量名位于一個(gè)嵌套的def中衍菱,作用域查找只限定在嵌套的def
  • nonlocal只要作用是允許嵌套的作用域中的名稱被修改脊串,而不只是被引用
  • nonlocal只在一個(gè)函數(shù)內(nèi)有意義

格式

def func():
      nonloacal name1,name2,....
  • 在默認(rèn)情況下清钥,不允許修改嵌套的def作用域中的名稱祟昭,修改嵌套作用域中的名稱會(huì)引發(fā)錯(cuò)誤
>>> def tester(start):
...     state = start
...     def nested(label):
...             state+=1
...             print(label,state)
...     return nested
... 
>>> F = tester('hello')
>>> F('cdef')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in nested
UnboundLocalError: local variable 'state' referenced before assignment
>>> 

使用nonlocal進(jìn)行修改
將嵌套的nested中的state聲明一個(gè)nonlocal,我們就可以在nested函數(shù)中修改了

>>> def tester(start):
...     state = start
...     def nested(state):
...             state+=1
...             print(state)
...     return nested
... 
>>> F = tester(25)
>>> F(22)
23

邊界情況

  • nonlocal語句在執(zhí)行時(shí)谜叹,nonlocal聲明的名稱必須已經(jīng)在一個(gè)嵌套的def作用域中賦值過,否則將會(huì)得到一個(gè)錯(cuò)誤:不能通過在嵌套的作用域中賦值來創(chuàng)建變量
  • nonlocal限制作用域查找僅為嵌套的def,不會(huì)在嵌套的模塊的全局作用域或所有def之外的內(nèi)置作用域中查找
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市女仰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乔外,老刑警劉巖一罩,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件推汽,死亡現(xiàn)場(chǎng)離奇詭異歧沪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暖夭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門撵孤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邪码,“玉大人,你說我怎么就攤上這事奴潘。” “怎么了影钉?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵画髓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我平委,道長(zhǎng)奈虾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮肉微,結(jié)果婚禮上匾鸥,老公的妹妹穿的比我還像新娘。我一直安慰自己浪册,他們只是感情好扫腺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著村象,像睡著了一般笆环。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躁劣,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天熙宇,我揣著相機(jī)與錄音烫止,去河邊找鬼馆蠕。 笑死播赁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寺酪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼阿趁!你這毒婦竟也來了皂股?” 一聲冷哼從身側(cè)響起呜呐,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤洋魂,失蹤者是張志新(化名)和其女友劉穎副砍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨垃,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再膳。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡不瓶,死狀恐怖蚊丐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凛篙,我是刑警寧澤鞋诗,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布秀仲,位于F島的核電站雁刷,受9級(jí)特大地震影響沛励,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜企蹭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一送漠、第九天 我趴在偏房一處隱蔽的房頂上張望螺男。 院中可真熱鬧下隧,春花似錦、人聲如沸土辩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筷厘。三九已至摊溶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膛薛。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工哄啄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪么,地道東北人锌半。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像记焊,于是被迫代替她去往敵國(guó)和親碗硬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肛响,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)蔫磨,斷路器堤如,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 1搀罢、引言 最近在刷leetcode題的時(shí)候榔至,遇到一個(gè)求最長(zhǎng)回文子串的題目唧取,于是,我寫了如下的代碼: 哎呀,寫了兩個(gè)...
    文哥的學(xué)習(xí)日記閱讀 14,320評(píng)論 6 32
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法介褥,類相關(guān)的語法,內(nèi)部類的語法睛廊,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,622評(píng)論 18 399
  • Python作用域基礎(chǔ) 當(dāng)在程序中使用變量名時(shí),Python創(chuàng)建脉课、改變或查找變量名都是在所謂的命名空間中進(jìn)行的财异。作...
    So_ProbuING閱讀 299評(píng)論 0 1
  • 語文的學(xué)習(xí)總有他的一套規(guī)律俐东,不管是在作文答題還是趣味題等,他們都有自己的考點(diǎn)要求羹唠,所以,遵循他的考點(diǎn),就不會(huì)錯(cuò)過掌猛!...
    Sweet嫚閱讀 1,877評(píng)論 0 4