考虑一个定义为:]的函数>
。def fun(a, *args): print(type(args), args)
当被调用时,它将额外的位置参数打包为tuple
而不是<< tuple >>:>>> fun(2,3,4) <class 'tuple'> (3, 4)
我想在函数参数之外实现类似的功能。因此,我以为我可以通过扩展可迭代的拆包来实现相同的目的,但是它始终将内容打包为list
# LHS is a tuple
>>> (a, *args) = (2,3,4)
>>> type(args)
<class 'list'>
>>> args
[3, 4] #but args is not a tuple !
使其与以下相同:
# LHS is a list >>> [a, *args] = (2,3,4) >>> type(args) <class 'list'> >>> args [3, 4]
我可以理解,这也是PEP中提出的方法。但是我在问是否还有另一种方式来实现我想要的。当然,我可以稍后再将args转换为元组:
>>> args = tuple(args)
>>> args
(3, 4)
如果无法在分配过程中直接实现。
考虑一个定义为的函数:def fun(a,* args):print(type(args),args)调用时,它将多余的位置参数打包为元组。 >>> fun(2,3,4)
(3,4)...
t = (2,3,4)
a, args = t[0], t[1:]
>>> type(args)
<class 'tuple'>