1

我正在尝试做这样的事情:

import threading
def func1(a,b):
    def func2():
        t=threading.Thread(target=func3)
        return t
    return func2

func2=func1(a,b)
func2()

我有一个限制(我使用的语言是带有一些受限功能的python)不要将 args 参数用于 Thread 函数,而是我想将 a 和 b 作为参数传递给 func3。如何使用闭包做到这一点?

4

2 回答 2

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)
于 2012-10-24T12:19:18.433 回答
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()
于 2012-10-24T12:37:50.523 回答