【发布时间】:2013-07-24 23:23:36
【问题描述】:
我想知道元组解包是如何工作的,我在几个线程上发现了这个答案作为切片的替代方法:
>>>>def unpack(first,*rest):
return first, rest
其工作原理如下:
>>>>first,rest=unpack(*(1,2,3))
>>>>first
1
>>>>rest
(2,3)
我不明白 * 是如何工作的。参数“first”不应该提供给我的函数 unpack 吗?我认为 * 表示该参数是可选的。
感谢您的帮助
【问题讨论】:
-
你在这里混合概念。
unpack()的返回值被解包为first和rest(元组解包)。unpack()函数签名有一个 splat-syntax catch-all 参数rest。第三,您正在使用函数调用功能将序列扩展为位置参数。 这是三个不同的东西。 -
是的,我知道我使用的是函数调用功能。我不明白的是 unpack(*(1,2,3)) 相当于 unpack(1,2,3)
标签: python python-2.7 iterable-unpacking