繁体   English   中英

Python线程模块无法识别args

[英]Python threading module not recognizing args

由于某些原因,即使给出了一个必需的参数,也会引发以下错误。

Traceback (most recent call last):
    File "C:\Users\josep_000\Desktop\test.py", line 53, in <module>
        a=threading.Thread(target=getin(),args=(aa))
TypeError: getin() missing 1 required positional argument: 'var'

getin()之后删除括号:

    a=threading.Thread(target=getin(),args=(aa))
                                   ^^ these need to be removed

当前,您的代码直接调用getin() ,而不是将其传递给Thread构造函数以从新线程的上下文中进行调用。

另外, args必须是一个元组。 要创建单元素元组,请在aa之后添加一个逗号:

    a = threading.Thread(target=getin, args=(aa,))

Python threading.Thread接受callable对象作为目标。

因此,当您执行此threading.Thread(target=getin(),args=(aa)) ..理想情况下,您传递的是传递不带参数的getin的返回值。 由于getin需要1个参数,因此这是一个错误。

您应该像下面这样通过...

threading.Thread(target=getin,args=(aa, ))

此外, Thread类接受tuple作为args ...

当您在Python内部使用没有任何逗号的parentheses ,只yields内部给定的值。...如果您需要一个带有一个值的元组,则必须在内部添加一个comma

括号内没有任何逗号,可以为您提供一个tuple object其中包含空项,如下所示。

>>> a = ()
>>> a
()
>>> type(a)
<type 'tuple'>

如果您使用的parentheses内含一个值而没有任何comma ,则结果将如下所示。

>>> b = (1)
>>> type(b)
<type 'int'>

如果您需要具有一个值的元组,则必须在内部添加一个comma

>>> c = (1,)
>>> type(c)
<type 'tuple'>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM