Py学习  »  Python

*循环中的参数(Python)

EdiBoba • 3 年前 • 1155 次点击  

在python中,我可以编写如下内容:

some_list = [(1, 2, 3), (3, 2, 1)]

for i, *args in some_list:
   print(args)

我将获得下一个输出:

[2, 3]
[2, 1]

当我们使用 *args 作为函数参数,它被解包为 tuple .

为什么我们会收到 list 在这种情况下?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132795
 
1155 次点击  
文章 [ 1 ]  |  最新文章 3 年前
user2390182
Reply   •   1 楼
user2390182    3 年前

这只是一个设计决定。让它成为一个 tuple 在会议上进行了辩论 PEP 3132 ,但因可用性原因被拒绝:

将带星号的目标设置为元组,而不是列表。这将是 与函数的*参数一致,但对 结果更难。

Simlarly将其与任务rhs上的iterable类型相同,但被拒绝:

试着给带星号的目标和来源相同的类型, 例如,a中的b,*b='hello'将被分配字符串'ello'。 这似乎很好,但不可能始终正确 所有的一切。

你的例子列在同一个政治公众人物的下面 specification .

在这本书中可以找到一些理由 mailing list 关于那场辩论。

当处理迭代器时,你事先不知道长度, 所以获得元组的唯一方法是首先生成一个列表,然后 然后从中创建一个元组。