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
发布评论