python多线程target参数

target后面的方法加括号和不加括号分别什么意思?有什么不一样?为什么执行结果顺序不一样?

img

img

target=thread_work
表示target这个参数是thread_work这个函数
target=thread_work()
表示target这个参数是thread_work这个函数执行之后的返回值

我举一个例子:

def thread_work():
    return lambda : print("hello")

对于这个函数,前者线程执行不会输出,因为这个函数本身没有输出,它返回了一个函数
后者会输出 hello,因为它将 thread_work() 先执行,得到了匿名函数,这个匿名函数本身作为线程执行,会输出 hello

不加括号表示引用这个函数的指针,加括号表示这个指针返回的值。不加括号的不会有具体返回值,它只是一个的引用,后者反之。