关于python:向函数传递自定义关键字参数

Passing custom keyword arguments to a function

本问题已经有最佳答案,请猛点这里访问。

我有一个程序有一个update_database()函数,但在运行时之前我不知道关键字参数是什么,所以一次调用该函数可能需要:

1
2
table_name = 'example1'
update_database(table_name, column1='...', column3='...')

但另一次可能是:

1
2
table_name = 'example2'
update_database(table_name, column5='...', column2='...')

因此,函数调用需要混合使用常规参数和关键字参数。我可以访问的关键字参数名作为列表,这样我就可以按照我喜欢的任何旧方式对其进行格式化,但我不确定这种行为在Python中是否可行。

有人知道这是否可行吗?

更新:

值得注意的是,update_database()函数是导入模块的一部分,因此我无法修改它的定义,我可以以某种方式包装它,但我不确定这是否对我有好处。


您可以在原始函数中使用未定义数量的关键字参数,例如:

(对于关键字参数,您有一个简单的字典而不是列表)

1
2
3
def update_database(tname, **columns):
    for key, value in columns.items():
        # do something with key-value pairs

更新:

所以我想,这就是我们在评论部分所说的,对吗?

1
2
3
4
5
6
7
# Create dictionaries with keys as keywords and values as argument values
kwargs0 = {'arg0': 0, 'arg1': 2, 'arg2': 5}
kwargs1 = {'arg99': 1, 'arg13': None, 'arg0': 7}

# Call the function and UNPACK the dictionaries
update_database('db_name', **kwargs0)
update_database('db_name', **kwargs1)