为什么我们必须在 python 多线程的 args 中添加逗号','?

互联网 行业动态 更新时间:2024-06-13 00:19:32

Tim*_*ers 6

唉,这并不是特别容易——它处于 Python 语法的一些黑暗角落的交汇处。

首先,需要逗号来创建一个包含线程号的具有单个元素的元组:

>>> 6
6
>>> 6,
(6,)
>>> (6,)
(6,)
>>> (6)
6

看?没有逗号,或者只有括号,6 就是 int 6。但是有逗号 - 有或没有括号 - 它变成一个包含 int 6 作为其唯一元素的元组。

为什么它需要是一个元组?您很快就会被告知它实际上没有 ;-) ,但在此之前请考虑您可能需要将任意数量的参数传递给线程。所以后面的表达式args=必须产生一个序列。

但是如果逗号的出现构成一个元组,为什么还需要括号呢?那是“一些黑暗角落的交集”:参数列表中的逗号分隔参数,并且在这种情况下优先。所以需要括号来强制执行意图:“这个逗号并不意味着下一个参数正在开始 - 这个逗号意味着我想要一个元组”。

为避免考虑所有这些,您可以在此上下文中使用列表作为序列:

    t = threading.Thread(target=aess, args=[thread_number])

的实现Thread并不在意将哪种序列作为 的值传递args=,并且许多代码实际上使用列表而不是元组。但是,上次我查看时,没有记录在案,所以有点冒险。

编辑

从那以后,我向 Python 问题跟踪器添加了一个请求,要求我们最终记录一个列表在这种情况下是好的。一直都是。看起来几乎可以肯定会进行此文档更改。

更多推荐

逗号,我们必须,多线程,python,args

本文发布于:2023-04-21 10:04:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/b480f3a0343103b77729b7b7040ff9b6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:逗号   我们必须   多线程   python   args

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!