【发布时间】:2020-09-02 20:12:52
【问题描述】:
给定:
def named_args_with_optional_args(arg1, arg2, *optional_args, kwarg1=1, kwarg2=1):
pass
这两项工作:
named_args_with_optional_args(arg1=1, arg2=1,**{"kwarg1":1,"kwarg2":1}) # all args named, no optional args
named_args_with_optional_args(1, 1, *(1,2,3), **{"kwarg1":1,"kwarg2":1}) # optional args used, *but no named args*
但是,如何同时使用命名参数和可选参数调用named_args_with_optional_args?我试过了:
named_args_with_optional_args(arg1=1,arg2=1, *(1,2,3), **{"kwarg1":1,"kwarg2":1}) # TypeError: named_args_with_optional_args() got multiple values for argument 'arg1'
named_args_with_optional_args(arg1=1,arg2=1, optional_args=(1,2,3), **{"kwarg1":1,"kwarg2":1}) # TypeError: named_args_with_optional_args() got an unexpected keyword argument 'optional_args'
named_args_with_optional_args(arg1=1,arg2=1, 1,2,3, **{"kwarg1":1,"kwarg2":1}) # SyntaxError: positional argument follows keyword argument
named_args_with_optional_args(arg1=1,arg2=1, *optional_args=(1,2,3), **{"kwarg1":1,"kwarg2":1}) # SyntaxError: invalid syntax
【问题讨论】:
-
你可以做
def named_args_with_optional_args(*optional_args, arg1, arg2, kwarg1=1, kwarg2=1):和named_args_with_optional_args(1, 2, 3, arg1=4, arg2=5, kwarg1=6, kwarg2=7)。
标签: python python-3.x syntax