我有以下代码。在此,我想利用为'a'提供的可选参数;即“ 5”,而不是“ 1”。如何使元组“数字”包含的第一个元素为1而不是2?
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(1,2,3,4,5,6,7,8,9,10,Jack=111,John=222,Tom=333)
答案 0 :(得分:4)
“惯用的” 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=":)")
我不知道实际上选择不传递可选参数的方法。如果您正在寻找一个实用的解决方案,这就是方法。但是,如果有更深层次的黑客技术可以让您完全绕开该论点,那么我也有兴趣看到它。
答案 1 :(得分:3)
window.onafterprint = function(){ window.close() }
属性在元组中提供默认参数。您可以在这里使用它。
.__defaults__
答案 2 :(得分:0)
一种选择是将a
后的*numbers
def fun_varargs(*numbers, a=5, **dict):
...
但是,您不能再将其用作位置参数。 fun_varargs(42)
不会将a
设置为42。您只能使用关键字参数,即a
来定义fun_varargs(a=42)
。