【发布时间】:2020-01-30 20:01:10
【问题描述】:
在 Python 中,我可以显式列出函数接受的仅限关键字的参数:
def foo(arg, *, option_a=False, option_b=False):
return another_fn(arg, option_a=option_a, option_b=option_b)
虽然调用另一个函数的语法有点冗长,但我确实在函数调用中对命名参数进行了很好的自动完成:
我可以通过使用**kwargs来消除函数调用中的冗余:
def foo(arg, **kwargs):
return another_fn(arg, **kargs)
但后来我失去了编辑器中的自动完成功能(并且函数签名不太清晰):
我怎样才能两全其美?我想写一个显式的函数签名,但仍然在函数体中得到一个kwargs dict。
【问题讨论】:
-
当您想要传递给函数的关键字参数的数量是任意数量时,最好使用
**kwargs。在您的情况下,您只有两个关键字参数要传递。因此,请使用option_a=False, option_b=True,在这种情况下更清楚。 -
@Ch3steR 假设我有十个关键字参数,需要将它们全部传递给另一个采用相同关键字参数的函数。您可以看到样板如何在没有
**kwargs的情况下扩展。
标签: python python-3.x keyword-argument