我有一个具有update_database()
函数的程序,但我不知道关键字参数在运行时会是什么,因此有一次调用该函数时可能需要:
table_name = 'example1'
update_database(table_name, column1='...', column3='...')
但另一次可能是:
table_name = 'example2'
update_database(table_name, column5='...', column2='...')
因此函数调用需要是常规参数和关键字参数的混合。我可以作为列表访问的关键字参数名称,所以我可以将它们格式化为任何我喜欢的旧方法,但我不确定在python中是否可以实现这种行为。
有人知道这是否可能如何?
更新:
还值得注意的是update_database()
函数是导入模块的一部分,所以我无法修改它的定义,我可以用某种方式包装它,但我不确定这是否能让我获得任何东西。
答案 0 :(得分:3)
您始终可以在原始函数中使用未定义数量的关键字参数,例如:
(在关键字参数的情况下,您有一个简单的字典而不是列表)
def update_database(tname, **columns):
for key, value in columns.items():
# do something with key-value pairs
的更新:强> 的
所以我想,这就是我们在评论部分讨论的内容,我是否正确?
# 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)