【发布时间】:2020-04-09 02:46:02
【问题描述】:
考虑一个定义为的函数:
def fun(a, *args):
print(type(args), args)
调用时,它将额外的位置参数打包为一个元组。
>>> fun(2, 3, 4)
<class 'tuple'> (3, 4)
我想在函数参数之外实现类似的东西。所以,我认为我可以通过扩展的可迭代解包来实现相同的目标,但它总是将内容打包为 list 而从不打包为 tuple:
# 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)
如果在分配期间无法直接实现。
【问题讨论】:
-
一个核心python开发者同意你twitter.com/raymondh/status/1205656939532734464
标签: python python-3.x tuples iterable-unpacking argument-unpacking