1
我想跨模塊使用全局變量,通過導入變量並在函數內本地修改它。代碼和輸出如下。最後的輸出結果並不是我所期望的,我認爲它應該是15,因爲它已經被func3在全局範圍內修改過了。任何人都可以解釋爲什麼最後的輸出仍然是10.Python全局關鍵字行爲
謝謝!
test2.py
myGlobal = 5
def func3():
global myGlobal
myGlobal = 15
print "from 3: ", myGlobal
test1.py
from test2 import myGlobal, func3
def func1():
global myGlobal
myGlobal = 10
def func2():
print "from 2: ", myGlobal
print "init: ", myGlobal
func1()
func2()
func3()
func2()
輸出:
init: 5
from 2: 10
from 3: 15
from 2: 10
'func3'使用自己'myGlobal'沒有在'test1.py'中導入'myGlobal' – Farhadix
Python中沒有真正的全局變量;該模塊擁有自己的「全局」名稱空間。您可以顯式修改'test2.myGlobal',但'global'關鍵字不會讓您重新綁定另一個模塊中的名稱。 – geoffspear
請不要編寫這樣的代碼,這是不必要的,使代碼更難以推理,而且更難以測試。 –