在python中调用闭包内的函数

sec*_*ing 1 python

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

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

func2=func1(a,b)
func2()
Run Code Online (Sandbox Code Playgroud)

我有一个限制(我使用的语言是python与一些受限制的函数)不使用螺纹函数的args参数而不是我想将a和b作为参数传递给func3.我怎样才能使用闭包?

int*_*jay 5

你可以使用lambda:

t=threading.Thread(target=lambda: func3(a,b))
Run Code Online (Sandbox Code Playgroud)

即使在退出之后,其价值ab将被关闭func1.

您可以创建一个命名函数,而不是lambda:

def thread_func():
    func3(a,b)
t = threading.Thread(target=thread_func)
Run Code Online (Sandbox Code Playgroud)