第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不明白為什么發(fā)生UnboundLocalError

不明白為什么發(fā)生UnboundLocalError

不明白為什么發(fā)生UnboundLocalError 我在這做錯了什么?counter = 0def increment():   counter += 1increment()上面的代碼拋出了一個UnboundLocalError。
查看完整描述

4 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊

Python沒有變量聲明,因此必須弄清楚變量本身的范圍。它通過一個簡單的規(guī)則來實現(xiàn):如果對函數(shù)內(nèi)部的變量賦值,則該變量被視為本地變量。[1] 因此,這條線

counter += 1

隱含地使counter本地化increment()。但是,嘗試執(zhí)行此行將嘗試counter在分配之前讀取局部變量的值,從而產(chǎn)生一個UnboundLocalError。[2]

如果counter是全局變量,global關(guān)鍵字將有所幫助。如果increment()是本地函數(shù)和counter局部變量,則可以nonlocal在Python 3.x中使用。


查看完整回答
反對 回復(fù) 2019-05-27
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊

您需要使用全局語句,以便修改全局變量計數(shù)器,而不是局部變量:

counter = 0def increment():
  global counter
  counter += 1increment()

如果counter定義的封閉范圍不是全局范圍,則在Python 3.x上可以使用非本地語句。在Python 2.x的相同情況下,您將無法重新分配到非本地名稱counter,因此您需要進(jìn)行counter可變并修改它:

counter = [0]def increment():
  counter[0] += 1increment()print counter[0]  # prints '1'


查看完整回答
反對 回復(fù) 2019-05-27
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊

要回答主題中的問題,*是,Python中有閉包,除了它們只適用于函數(shù)內(nèi)部,并且(在Python 2.x中)它們是只讀的; 您無法將名稱重新綁定到其他對象(但如果該對象是可變的,則可以修改其內(nèi)容)。在Python 3.x中,您可以使用nonlocal關(guān)鍵字來修改閉包變量。

def incrementer():
    counter = 0
    def increment():
        nonlocal counter
        counter += 1
        return counter    return increment

increment = incrementer()increment()   # 1increment()   # 2

*原始問題的標(biāo)題詢問了Python中的閉包。


查看完整回答
反對 回復(fù) 2019-05-27
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊

您的代碼拋出的UnboundLocalError原因已經(jīng)在其他答案中得到了很好的解釋。

但在我看來,你正試圖建立一些類似的東西itertools.count()。

那你為什么不嘗試一下,看看它是否適合你的情況:

>>> from itertools import count>>> counter = count(0)>>> counter
count(0)>>> next(counter)0>>> counter
count(1)>>> next(counter)1>>> counter
count(2)


查看完整回答
反對 回復(fù) 2019-05-27
  • 4 回答
  • 0 關(guān)注
  • 2021 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號