我正在尝试做这样的事情:
import threading
def func1(a,b):
def func2():
t=threading.Thread(target=func3)
return t
return func2
func2=func1(a,b)
func2()
我有一个限制(我使用的语言是带有一些限制函数的python)不使用Thread函数的args参数,而是我想将a和b作为参数传递给func3。如何使用闭包来做到这一点?
答案 0 :(得分:5)
您可以使用lambda:
t=threading.Thread(target=lambda: func3(a,b))
即使在a
退出后,b
和func1
的值也会保留在闭包中。
您可以创建一个命名函数,而不是lambda:
def thread_func():
func3(a,b)
t = threading.Thread(target=thread_func)
答案 1 :(得分:2)
如果没有lambda
,我可能会调查functools.partial
。如果不允许,您可以这样做:
import threading
def func1(a,b):
def func2():
def func4():
return func3(a,b)
return threading.Thread(target=func4)
return func2
func2=func1(a,b)
func2()