2010-02-19 40 views

回答

6

您可以通過顯式地從其他模塊訪問全局變量。

在模塊foo

joe = 5 

在模塊bar

from foo import joe 
    print joe 

請注意,這是不推薦,雖然。通過使用函數來隱藏對模塊變量的訪問要好得多。

+2

最好不要在全局變量中存儲可變狀態,而是使用類。 – 2010-02-19 17:31:58

+0

@Eli Bendersky,你的意思是「通過使用函數隱藏對模塊變量的訪問要好得多」? @邁克格雷厄姆,你是什麼意思的「使用類」?你怎麼做得到他想要的? – LWZ 2013-02-16 04:13:20

+1

@LWZ:我的意思是,當一個模塊讓其他模塊直接訪問其數據時,可能會導致難以調試的問題。如果出於某種原因絕對需要訪問全局數據,則應至少提供獲取/設置功能。這些函數使得稍後修改代碼變得容易(比如說,用其他方法替換全局數據),並在出現問題時進行調試。 – 2013-02-16 13:27:37

0

作用域超出本地必須通過到範圍的引用被寫入,或一個或globalnonlocal(3.X +)指令之後。

2

Python不支持在幾個模塊之間共享的全局變量:這是一個功能。隱含修改遠用變量的代碼是令人困惑和不可維護的。 真正的解決方案是封裝類中的所有狀態,並將其實例傳遞給任何需要修改的狀態。這可以使代碼更清晰,更易維護,更可測試,更模塊化,更易於使用。

相關問題