有时候我会编写一个函数来调用具有相同long关键字参数的另一个函数,以及一堆不相关的参数。
是否有一个简短的表示法转发关键字参数而不重复两次,假设它必须通过关键字调用(因为bar
还有其他关键字参数未被使用)?
考虑以下功能。
def foo(a1, a2, a3, arg_with_very_long_name):
# do other work
bar(b1, b2, b3, b4, arg_with_very_long_name=arg_with_very_long_name)
上面arg_with_very_long_name=arg_with_very_long_name
的调用中,bar
是否有较短的格式?
答案 0 :(得分:2)
没有比你已经完成更好的完美方式了。另一种选择是使用**kwarg
解压缩:
def foo(a, b, c, **kwargs):
# do stuff
bar(aa, bb, cc, **kwargs)
这里的缺点(和好处)是你不会立即知道哪些关键字被转发到bar
。它使得foo
接受bar
所做的任何默认参数 - 但是你不能通过查看foo
来反省这些参数。
答案 1 :(得分:0)
如果关键字参数直接跟随位置参数,则无需使用kwarg=kwarg
语法:
def f(a, b, c, some_ver_long_kwarg_name=None):
print(some_very_long_kwarg_name)
f(1, 2, 3, 4) # Prints 4