TypeError: test() argument after * must be an iterable, not int造成的原因

写的代码:

import threading as thr
info = [1,2,3,4,55,233]


def test(i):
    print(222)

t = thr.Thread(target=test,args=(5))
t.start()
    

文档查找:

class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)

This constructor should always be called with keyword arguments. Arguments are:

group should be None; reserved for future extension when a ThreadGroup class is implemented.

target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.

name is the thread name. By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number.

args is the argument tuple for the target invocation. Defaults to ().

#默认参数为元组

kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.

If not None, daemon explicitly sets whether the thread is daemonic. If None (the default), the daemonic property is inherited from the current thread.

If the subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread

报错的原因:

传入参数需要是一个元组,所以修改一下代码,这里参数后面要加逗号(5,)

修改代码:


import threading as thr
info = [1,2,3,4,55,233]

def test(i):
    print(222)

t = thr.Thread(target=test,args=(5,))
t.start()
    

猜你喜欢

转载自blog.csdn.net/heiiochange/article/details/93379796