为什么以下代码在Python 2.7.3中为SyntaxError
抛出*phones
?
contact = ('name', 'email', 'phone1', 'phone2')
name, email, *phones = contact
这是在Python 3中引入的,而不是向后移植的吗?如何在Python 2中使用它?也就是说,如果没有一些微不足道的方法来解决问题。
答案 0 :(得分:3)
Yup,扩展的解包语法(使用*
来完成其余部分)仅限Python 3.x. Python 2.x中最接近的是从余数中明确切片所需的部分:
contact = ('name', 'email', 'phone1', 'phone2')
(name, email), phones = contact[:2], contact[2:]
如果你需要它来处理任意迭代,那么你可以使用类似的东西:
from itertools import islice
i = iter(contact)
(name, email), phone = tuple(islice(i, 2)), list(i)