Python 是否可以在参数列表中间放置一个ValARGS参数,最后一个可选参数?

Python 是否可以在参数列表中间放置一个ValARGS参数,最后一个可选参数?,python,syntax,variadic-functions,Python,Syntax,Variadic Functions,这在句法上是可能的,但实际上可能吗 def func(arg1, *args2, arg3 = None): .... 我们永远无法访问arg3,对吗?如果是这样,Python为什么允许这样做?您所声明的是一个函数,其中至少有一个位置参数和一个只需要关键字的参数。如果要为arg3传递一个值,可以将其称为func('arg',1,2,3',随便什么',arg3=2)。比如说, >>> def func(arg1, *args2, arg3=None): ... pr

这在句法上是可能的,但实际上可能吗

def func(arg1, *args2, arg3 = None):
    ....

我们永远无法访问arg3,对吗?如果是这样,Python为什么允许这样做?

您所声明的是一个函数,其中至少有一个位置参数和一个只需要关键字的参数。如果要为
arg3
传递一个值,可以将其称为
func('arg',1,2,3',随便什么',arg3=2)
。比如说,

>>> def func(arg1, *args2, arg3=None):
...   print('arg1', arg1)
...   print('args2', args2)
...   print('arg3', arg3)
...
>>> func(1, 2, 3, 4, 5, 6)
arg1 1
args2 (2, 3, 4, 5, 6)
arg3 None
>>> func(1, arg3=2)
arg1 1
args2 ()
arg3 2
>>>

您可以使用arg3参数调用它。你只需要明确地告诉我:

func('arg1', 'some' 'values', 'that', 'will be', 'treated', 'as *arg2', arg3 = 'new value')

通过这种方式,您将获得
arg3='newvalue'

,值得注意的是,这仅在Python3中才可能实现。Python 2中不存在只包含关键字的参数。