簡體   English   中英

pythonic方式:dict中的vars

[英]pythonic way: vars in dict

嗨,Python程序員,

在我的腳本中,我有一些設置變量,這些變量是由函數生成並以字典形式返回的。 這些設置變量被傳遞給幾個函數。 我正在嘗試編寫易於閱讀的代碼,所以我想知道您希望使用哪種表示法?

def fooA(a,b,c):
    return a+b+c

def fooB(D,c):
    return D['a']+D['b']+c


settings = { 'a':1, 'b':2 }
c = 3

print fooA(settings['a'],settings['b'],c)
print fooB(settings,c)

還是您認為最好的方法是不將設置變量包裝在字典中?

我當然不是Pythonic方面的專家,但是我認為這很糟糕。

使用一個對象或一個命名的tuple或其他東西。 在我看來,字典訪問語法對於諸如設置之類的東西不是很好。

將設置(實際上是鍵值對)存儲在字典中絕對可以(這可能是實現此目的的最佳方法)。 如您的示例所示,您的代碼變得更短,更易於理解。

Django將其設置存儲在字典中。

mod_wsgi將請求環境(標頭)存儲在字典中,它們是實際設置。

os.environ是一本字典。

可以使用dict或類似dict的對象進行設置(您可能想改用一些自定義的不可變dict樣的對象,但是無論如何...),就像任何自定義“設置”對象FWIW一樣(提示:Python對象是主要是贊美的命令...)。

wrt /您的函數調用,沒有一個萬能的答案。 第一個版本“更好”,因為它更加分離(不依賴於您的設置,無需假設定義了哪些設置等)),並且更加明確,但是某些代碼確實與應用程序的設置相關聯,因此它可能使傳遞整個“設置” dict-or-object或提供一種檢索它的方式更有意義。

我認為字典是可以的,如果您想將設置寫入人類可讀文件,則可以使用標准庫中的configparser: http ://docs.python.org/2/library/configparser.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM