总体思路是:
def func(arg1, arg2, ..., kwarg1=default, kwarg2=default, ..., *args, **kwargs):
...
您可以根据需要使用任意多个。在*
和**
将“吸收”任何剩余价值,未列入。
位置参数(不提供默认值)不能通过关键字指定,非默认参数不能跟随默认参数。
注意Python 3还通过在以下位置添加仅关键字参数来指定仅关键字参数*
:
def func(arg1, arg2, *args, kwonlyarg=default):
...
您也可以*
单独使用(def func(a1, a2, *, kw=d):
),这意味着不会捕获任何参数,但是后面的所有内容仅是关键字。
因此,如果您在3.x中,则可以使用以下方式产生所需的行为:
def myFun3(*, name, lname, **other_info):
...
这将允许使用name
和lname
作为仅关键字进行调用。
请注意,这是一个不寻常的界面,可能会使用户烦恼-我只会在非常特定的用例中使用它。
在2.x中,您需要通过解析进行手动设置**kwargs
。