在带有可变参数的函数中使用默认参数。这可能吗?

我有以下一段代码。在这里,我想利用给 '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)


萧十郎
浏览 151回答 3
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=":)")我不知道有什么方法可以实际选择不传递可选参数。如果您正在寻找实用的解决方案,这就是您要走的路。但是如果有一些更深层次的技巧可以让你完全绕过争论,我也会有兴趣看到它。

繁星coding

该.__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 5value of i is 1value of i is 2value of i is 3value of i is 4value of i is 5value of i is 6value of i is 7value of i is 8value of i is 9value of i is 10The value of i and j are: Jack 111The value of i and j are: John 222The value of i and j are: Tom 333

米脂

一种选择是在a之后移动*numbersdef fun_varargs(*numbers, a=5, **dict):     ...但是,您不能再将其用作位置参数。fun_varargs(42)不会设置a为 42。您只能定义ausing 关键字参数,即fun_varargs(a=42)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python