3 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
TA贡献1951条经验 获得超3个赞
执行此操作的“惯用”Python 方法是将可选参数默认为None.
def fun_varargs(a=None, *numbers, **dict):
if a is None:
a = 5
...
然后你可以明确选择不通过它。
fun_varargs(None, 1, 2, 3, 4, 5, some_keyword_arg=":)")
我不知道有什么方法可以实际选择不传递可选参数。如果您正在寻找实用的解决方案,这就是您要走的路。但是如果有一些更深层次的技巧可以让你完全绕过争论,我也会有兴趣看到它。
![?](http://img1.sycdn.imooc.com/5c4aa098000126bb09600960-100-100.jpg)
TA贡献1797条经验 获得超4个赞
该.__defaults__属性提供了一个元组默认参数。你可以在这里使用它。
>>> def fun_varargs(a = 5, *numbers, **dict):
... print("value of a is", a)
... for i in numbers:
... print("value of i is", i)
... for i, j in dict.items():
... print("The value of i and j are:", i,j)
...
>>> fun_varargs(fun_varargs.__defaults__[0],1,2,3,4,5,6,7,8,9,10,Jack=111,John=222,Tom=333)
value of a is 5
value of i is 1
value of i is 2
value of i is 3
value of i is 4
value of i is 5
value of i is 6
value of i is 7
value of i is 8
value of i is 9
value of i is 10
The value of i and j are: Jack 111
The value of i and j are: John 222
The value of i and j are: Tom 333
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
TA贡献1836条经验 获得超3个赞
一种选择是在a
之后移动*numbers
def fun_varargs(*numbers, a=5, **dict): ...
但是,您不能再将其用作位置参数。fun_varargs(42)
不会设置a
为 42。您只能定义a
using 关键字参数,即fun_varargs(a=42)
。
添加回答
举报