我有以下代码:你可以执行一行作为python线程的目标吗?
errorThread = Thread(
target=tkMessageBox.showerror("Error", b[-1][z:]),
args=())
errorThread.daemon = True
errorThread.start()
我知道我可以做其他的功能和传递参数,但出于好奇,你可以执行的Python代码一行作为目标的Python的主题?
我有以下代码:你可以执行一行作为python线程的目标吗?
errorThread = Thread(
target=tkMessageBox.showerror("Error", b[-1][z:]),
args=())
errorThread.daemon = True
errorThread.start()
我知道我可以做其他的功能和传递参数,但出于好奇,你可以执行的Python代码一行作为目标的Python的主题?
您可以使用lambda expression作为您的目标。毕竟,lambda表达式适用于:创建单个表达式可调用对象,而不必在函数定义上花费整整一行。
errorThread = Thread(target=lambda: tkMessageBox.showerror("Error", b[-1][z:]))
的lambda表达式,我不知道lambda,所以是的,这正是我想要的。谢谢! – user3000724
您可以在args
关键字参数中传递这些参数。像这样:
errorThread = Thread(
target=tkMessageBox.showerror,
args=("Error", b[-1][z:]))
errorThread.daemon = True
errorThread.start()
现在我感到很傻甚至没有意识到这个解决方案。绝对提供了一些干净的代码,所以我会使用这个,但另一个解决方案实际上回答了原来的问题,以防其他用户在这里遇到几十年的问题(加上我在其他SO问题/答案中看到过lambda,但从未使用它们我)。 – user3000724
你为什么不试试? :) – jDo
我确实尝试过,但没有奏效,但我不知道是否有某种方法需要格式化。目前它是它自己的一行功能。 – user3000724
好的。这个'errorThread = Thread(target = print,args =(“howdy”))'技术上可以在python3中工作(没有语法错误等),这是有道理的,因为它只是另一个函数。唯一的区别是它不是由用户编写的(或者至少这是我的理解,但我可能是错的)。无论如何,我还会为@Kevin建议 – jDo