使用*将值打包为元组,就像函数参数打包一样

问题描述 投票:1回答:1

考虑一个定义为:]的函数>

def fun(a, *args):
    print(type(args), args)

当被调用时,它将额外的位置参数打包为tuple

>>> fun(2,3,4)
<class 'tuple'> (3, 4)

我想在函数参数之外实现类似的功能。因此,我以为我可以通过扩展可迭代的拆包来实现相同的目的,但是它始终将内容打包为list

而不是<< tuple >>:# 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)...

python python-3.x tuples iterable-unpacking argument-unpacking
1个回答
0
投票
我知道的最接近的方式(我承认,不会直接回答您的问题)只是切片元组:

t = (2,3,4) a, args = t[0], t[1:] >>> type(args) <class 'tuple'>

© www.soinside.com 2019 - 2024. All rights reserved.