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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Python 3:UnboundLocalError:賦值之前引用的局部變量

Python 3:UnboundLocalError:賦值之前引用的局部變量

有只小跳蛙 2019-07-26 11:24:15
Python 3:UnboundLocalError:賦值之前引用的局部變量以下代碼給出了錯(cuò)誤UnboundLocalError: local variable 'Var1' referenced before assignment:Var1 = 1Var2 = 0def function():      if Var2 == 0 and Var1 > 0:         print("Result One")     elif Var2 == 1 and Var1 > 0:         print("Result Two")     elif Var1 < 1:         print("Result Three")     Var1 =- 1function()我怎樣才能解決這個(gè)問(wèn)題?謝謝你的幫助!
查看完整描述

3 回答

?
慕村9548890

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

您可以通過(guò)傳遞參數(shù)而不是依賴Globals來(lái)解決此問(wèn)題

def function(Var1, Var2): 
    if Var2 == 0 and Var1 > 0:
        print("Result One")
    elif Var2 == 1 and Var1 > 0:
        print("Result Two")
    elif Var1 < 1:
        print("Result Three")
    return Var1 - 1function(1, 1)


查看完整回答
反對(duì) 回復(fù) 2019-07-26
?
繁星coding

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

這是因?yàn)?,即?code>Var1存在,您也在Var1函數(shù)內(nèi)部的名稱上使用賦值語(yǔ)句(Var1 -= 1在底行)。當(dāng)然,這會(huì)在函數(shù)的范圍內(nèi)創(chuàng)建一個(gè)變量(實(shí)際上,Var1-=或者+=只會(huì)更新(重新分配)現(xiàn)有變量,但由于原因未知(可能是此上下文中的一致性),Python會(huì)將其視為賦值)。Python解釋器在模塊加載時(shí)看到這一點(diǎn),并決定(正確地說(shuō))全局作用域Var1不應(yīng)在本地作用域內(nèi)使用,這會(huì)導(dǎo)致在本地分配變量之前引用該變量時(shí)出現(xiàn)問(wèn)題。

Python開(kāi)發(fā)人員通常不贊成使用全局變量,因?yàn)樗鼤?huì)導(dǎo)致令人困惑和有問(wèn)題的代碼。但是,如果您想使用它們來(lái)完成代碼所暗示的內(nèi)容,您只需添加:

global Var1, Var2

在你的功能頂部。這將告訴Python您不打算在函數(shù)的本地范圍內(nèi)定義Var1Var2變量。Python解釋器在模塊加載時(shí)看到這一點(diǎn)并決定(正確地)以查找對(duì)全局范圍中的上述變量的任何引用。

一些資源

  • Python網(wǎng)站對(duì)這個(gè)常見(jiàn)問(wèn)題有很好的解釋

  • Python 3提供了一個(gè)相關(guān)的nonlocal聲明 - 也可以檢查一下。


查看完整回答
反對(duì) 回復(fù) 2019-07-26
?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果在函數(shù)內(nèi)部設(shè)置變量的值,python會(huì)將其理解為使用該名稱創(chuàng)建局部變量。此局部變量屏蔽全局變量。

在您的情況下,Var1被視為一個(gè)局部變量,它在被設(shè)置之前使用,因此錯(cuò)誤。

要解決這個(gè)問(wèn)題,你可以通過(guò)global Var1輸入函數(shù)明確地說(shuō)它是全局的。

Var1 = 1Var2 = 0def function():
    global Var1
    if Var2 == 0 and Var1 > 0:
        print("Result One")
    elif Var2 == 1 and Var1 > 0:
        print("Result Two")
    elif Var1 < 1:
        print("Result Three")
    Var1 =- 1function()


查看完整回答
反對(duì) 回復(fù) 2019-07-26
  • 3 回答
  • 0 關(guān)注
  • 1648 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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