2010-08-11 132 views

回答

5

它應該是簡單:

import constants 
print(constants.__dict__) 
+0

哇,這比我的答案簡單。 – tgray 2010-08-11 17:26:10

2
import constants 

constants_dict = {} 
for constant in dir(constants): 
    constants_dict[constant] = getattr(constants, constant) 

我不確定我是否看到這一點。如何編寫constants_dict['MY_CONSTANT']constants.MY_CONSTANT更好/更容易/更具可讀性?

編輯:

基於評論,我現在看到一些潛在的用途。

這是另一種寫上述方法,取決於你想要的緊湊程度。

constants_dict = dict((c, getattr(constants, c)) for c in dir(constants)) 

EDIT2:

cji爲贏! constants.__dict__

+0

有一件事我能想到的是使用計算值作爲重點 - 但後來有'getattr'和'setattr'功能。 – cji 2010-08-11 17:10:54

+0

嗯,我可以回答我目前的項目(雖然我的問題是函數,而不是變量):我們必須通過三個套接字連接,USB連接和無線電信號來引用變量(函數,在我的情況下)從函數調用到函數執行的完整路徑)。目標需要一個字符串字典:函數配對來知道要調用哪個函數,只需要給定函數名稱和參數值即可使用。更具體地說,我們配對字符串:函數,然後配對字節:字符串,這讓我們配對字節:函數(嚴重減少數據包大小)。 – 2010-08-11 17:14:02

+0

我將常量傳遞給我的模板...'constants_dict'部分將放棄,並且可以直接使用我的常量。 – mpen 2010-08-11 17:14:15