3 回答

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)

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
a -=
或者+=
只會(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)定義Var1
或Var2
變量。Python解釋器在模塊加載時(shí)看到這一點(diǎn)并決定(正確地)以查找對(duì)全局范圍中的上述變量的任何引用。
一些資源

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()
添加回答
舉報(bào)