考虑一个定义为的函数:
def fun(a, *args):
print(type(args), args)
调用时,它将额外的位置参数打包为tuple。
>>> fun(2, 3, 4)
<class 'tuple'> (3, 4)
我想在函数参数之外实现类似的事情。所以,我想我可以通过扩展的可迭代解包来实现同样的事情,但它总是将东西打包为一个列表,而不是一个元组:
# RHS is a tuple
>>> (a, *args) = (2, 3, 4)
>>> type(args)
<class 'list'>
>>> args
[3, 4] #but args is not a tuple!
使其与以下内容没有什么不同:
# RHS is a list
>>> (a, *args) = [2, 3, 4]
>>> type(args)
<class 'list'>
>>> args
[3, 4]
我可以理解,这也是PEP中提出的方式。
我在问是否有另一种方法来实现我想要的。
当然,我可以args
稍后通过以下操作转换为元组:
>>> args = tuple(args)
>>> args
(3, 4)
如果这不能在分配期间直接实现。