*参数中间的args属性

*args attribute in the middle of parameters

我正在研究在 python 函数之间使用 *args 的效果,但我不明白该用例是否实用甚至可能,它在我的 [=26 上被标记为错误=].

def my_function(a, *args, b):
print(a)
print(args)
print(b)


my_function(1, 2, 3, 4, 5)

我的输出如下:

Traceback (most recent call last):
  File "C:/Users/axel_/PycharmProjects/Python_Subject_Exam/3_new_exam_args_in_middle.py", line 10, in <module>
    my_function(1, 2, 3, 4, 5)
TypeError: my_function() missing 1 required keyword-only argument: 'b'

所以,*args 必须永远在任何函数参数的末尾,把它放在中间是无效的 python 代码对吗?

最后我也按预期进行了测试:

def my_function(a, b, *args):
    print(a)
    print(args)
    print(b)


my_function(1, 2, 3, 4, 5)

输出:

1
(3, 4, 5)
2

Process finished with exit code 0

此模式用于强制用户在 *args 之后指定所有参数,在您的情况下,您 必须 设置 b。这将被接受:

my_function(1, 2, 3, 4, 5, b=6)