社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

*循环中的参数(Python)

EdiBoba • 3 年前 • 1168 次点击  

在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
 
1168 次点击  
文章 [ 1 ]  |  最新文章 3 年前
user2390182
Reply   •   1 楼
user2390182    3 年前

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

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

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

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

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

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

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