如何在Python中将参数列表传递给函数
我以这种方式扭曲了一个类:如何在Python中将参数列表传递给函数,python,Python,我以这种方式扭曲了一个类: import Queue import threading class MyThread(): q = Queue.Queue() content = [] result = {} t_num = 0 t_func = None def __init__ (self, t_num, content, t_func): for item in content: self.q.put
import Queue
import threading
class MyThread():
q = Queue.Queue()
content = []
result = {}
t_num = 0
t_func = None
def __init__ (self, t_num, content, t_func):
for item in content:
self.q.put(item)
self.t_num = t_num
self.t_func = t_func
def start(self):
for i in range(self.t_num):
t = threading.Thread(target=self.worker)
t.daemon = True
t.start()
self.q.join()
return self.result
def worker(self):
while True:
item = self.q.get()
value = self.t_func(item)
self.result[item] = value
self.q.task_done()
x = [5, 6, 7, 8, 9]
def func(i):
return i + 1
m = MyThread(4, x, func)
print m.start()
它工作得很好。如果我用两个或多个参数设计函数func,并将这些参数以列表形式传递给类,那么如何在函数worker中正确调用func函数
例如
也许这会有帮助:
def __init__(self, t_num, content, func, *params):
func(*params) # params is a list here [param1, param2, param3....]
def func(param1, param2, param3):
# or
def func(*params): # for arbitrary number of params
m = MyThread(4, x, func, param1, param2, param3....)
您需要使用
*args
和**kwargs
向函数传递任意数量的参数
这里有更多信息:
作为一般规则,如果要将许多参数传递给特定函数,可以考虑将它们封装成一个简单的对象,其原因是
祝你好运:)你能举一个你想写的代码的例子吗?
def __init__(self, t_num, content, func, *params):
func(*params) # params is a list here [param1, param2, param3....]
def func(param1, param2, param3):
# or
def func(*params): # for arbitrary number of params
m = MyThread(4, x, func, param1, param2, param3....)