将函数参数名称作为字符串传递

时间:2019-08-23 18:22:58

标签: python

我正在使用在给定函数中具有数十个参数的API:

api.update_customer(a='', b='', c='', ..., x='', y='', z='')

调用时,我只需要更新一个或几个参数即可,例如:

api.update_customer(email='new.email@example.com')

...但是我不会事先知道需要更新哪个对象(例如电子邮件,电话号码等)。

如何围绕此调用构建包装器,以便同时传递参数名称及其新值?

def update_customer_details(key, value):
    api.update_customer(key=value)

3 个答案:

答案 0 :(得分:4)

您不需要编写包装器。只需使用关键字扩展来传递字典即可。

params = {'email': 'new.email@example.com'}
api.update_customer(**params)

答案 1 :(得分:1)

以丹尼尔·罗斯曼(Daniel Roseman)的答案为例,说明如何使用它:

def test2(x=None):
    print(x)

def test(**kwarg):
    test2(**kwarg)

test(x=5)

输出:5

答案 2 :(得分:0)

您可以尝试:

api.update_customer(field='my_field', value='my_value', *args, **kwrgs)