Использование переменной как ключевое слово передано ** kwargs в Python

У меня есть функция, которая обновляет запись через API. API принимает множество необязательных параметров ключевого слова:

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='joe@me.com', field='name', field_value='joe')

URL кодируется как:

https://www.example.com/api/do/update/email/joe@me.com?field=Joe

Как я могу заставить его кодировать как:

https://www.example.com/api/do/update/email/joe@me.com?name=Joe

Заранее спасибо.

Вместо того, чтобы передавать параметр, названный как field , вы можете использовать распаковку словаря, чтобы использовать значение field в качестве имени параметра:

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

Используя макет update_by_email :

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

Когда я звоню

 update_field("joe@me.com", "name", "joe") 

Я вижу, что kwargs внутри update_by_email

 {'name': 'joe'}