我調查了python中全局變量的作用域僅限於模塊。但是我需要在不同模塊中成爲全球化的範圍。有這樣的事嗎?我玩過__builtin__
,但沒有運氣。如何在Python中的不同模塊之間使用全局變量
在此先感謝!
我調查了python中全局變量的作用域僅限於模塊。但是我需要在不同模塊中成爲全球化的範圍。有這樣的事嗎?我玩過__builtin__
,但沒有運氣。如何在Python中的不同模塊之間使用全局變量
在此先感謝!
您可以通過顯式地從其他模塊訪問全局變量。
在模塊foo
:
joe = 5
在模塊bar
:
from foo import joe
print joe
請注意,這是不推薦,雖然。通過使用函數來隱藏對模塊變量的訪問要好得多。
作用域超出本地必須通過到範圍的引用被寫入,或一個或global
nonlocal
(3.X +)指令之後。
Python不支持在幾個模塊之間共享的全局變量:這是一個功能。隱含修改遠用變量的代碼是令人困惑和不可維護的。 真正的解決方案是封裝類中的所有狀態,並將其實例傳遞給任何需要修改的狀態。這可以使代碼更清晰,更易維護,更可測試,更模塊化,更易於使用。
最好不要在全局變量中存儲可變狀態,而是使用類。 – 2010-02-19 17:31:58
@Eli Bendersky,你的意思是「通過使用函數隱藏對模塊變量的訪問要好得多」? @邁克格雷厄姆,你是什麼意思的「使用類」?你怎麼做得到他想要的? – LWZ 2013-02-16 04:13:20
@LWZ:我的意思是,當一個模塊讓其他模塊直接訪問其數據時,可能會導致難以調試的問題。如果出於某種原因絕對需要訪問全局數據,則應至少提供獲取/設置功能。這些函數使得稍後修改代碼變得容易(比如說,用其他方法替換全局數據),並在出現問題時進行調試。 – 2013-02-16 13:27:37