2016-08-04 109 views
2

如果問題有點不清楚,我很抱歉,我不確定如何對它進行定義。通過變量名傳遞可選參數的Python方法

我正在使用一個包含多個可選參數的函數的包。假設有三個參數:x,y,z。我將始終傳遞相同的值,只是傳遞給不同的參數。所以我可以這樣做:

if setting is x: 
    package.someFunction(x=1) 
elif setting is y: 
    package.someFunction(y=1) 
elif setting is z: 
    package.someFunction(z=1) 

有沒有更pythonic的方式來做到這一點?我可以將參數名稱分配給某個變量嗎?

回答

5

我會建立一個字典setting作爲鍵和靜態值作爲值。這樣,你不必做那種尷尬的切換。

例如:

setting = 'x' 
kwargs = {setting: 1} 
package.someFunction(**kwargs) 

只要改變setting = 'x'行然而你得到的設置。它只需要等於package.someFunction中您想要應用該值的參數的名稱。

+0

所以設置只會是「x」或「z」?太好了,謝謝! – Niel

+0

@尼爾正是。你將'setting'作爲參數名稱的字符串。 –

+2

你甚至不需要參數的變量;你可以傳遞一個'dict'文字:'package.someFunction(** {setting:1})''。 – chepner