[英]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.