2014-03-13 57 views
3

我有一個函數可以通過API更新記錄。該API可使用多種可選關鍵字參數:將變量作爲關鍵字傳遞給Python中的kwargs

def update_by_email(self, email=None, **kwargs): 
    result = post(path='/do/update/email/{email}'.format(email=email), params=kwargs) 

我有一個使用第一個函數中要更新的記錄個別領域的又一功能:

def update_field(email=None, field=None, field_value=None): 
    """Encoded parameter should be formatted as <field>=<field_value>""" 
    request = update_by_email(email=email, field=field_value) 

這是行不通的。當我打電話:

update_field(email='[email protected]', field='name', field_value='joe')

的URL編碼爲:

https://www.example.com/api/do/update/email/[email protected]?field=Joe

我怎樣才能得到它作爲編碼:

https://www.example.com/api/do/update/email/[email protected]?name=Joe

預先感謝您。

回答

5

而不是將命名爲field參數,你可以使用字典拆包使用的field值作爲參數的名稱:

request = update_by_email(email, **{field: field_value}) 

使用的update_by_email一個模擬:

def update_by_email(email=None, **kwargs): 
    print(kwargs) 

當我打電話

update_field("[email protected]", "name", "joe") 

我看到裏面kwargsupdate_by_email

{'name': 'joe'} 
+0

完美的作品,謝謝! – Josh

相關問題