2016-03-17 27 views
0

我有以下代码:你可以执行一行作为python线程的目标吗?

errorThread = Thread(
    target=tkMessageBox.showerror("Error", b[-1][z:]), 
    args=()) 
errorThread.daemon = True 
errorThread.start() 

我知道我可以做其他的功能和传递参数,但出于好奇,你可以执行的Python代码一行作为目标的Python的主题?

+0

你为什么不试试? :) – jDo

+0

我确实尝试过,但没有奏效,但我不知道是否有某种方法需要格式化。目前它是它自己的一行功能。 – user3000724

+0

好的。这个'errorThread = Thread(target = print,args =(“howdy”))'技术上可以在python3中工作(没有语法错误等),这是有道理的,因为它只是另一个函数。唯一的区别是它不是由用户编写的(或者至少这是我的理解,但我可能是错的)。无论如何,我还会为@Kevin建议 – jDo

回答

2

您可以使用lambda expression作为您的目标。毕竟,lambda表达式适用于:创建单个表达式可调用对象,而不必在函数定义上花费整整一行。

errorThread = Thread(target=lambda: tkMessageBox.showerror("Error", b[-1][z:])) 
+0

的lambda表达式,我不知道lambda,所以是的,这正是我想要的。谢谢! – user3000724

2

您可以在args关键字参数中传递这些参数。像这样:

errorThread = Thread(
    target=tkMessageBox.showerror, 
    args=("Error", b[-1][z:])) 
errorThread.daemon = True 
errorThread.start() 
+0

现在我感到很傻甚至没有意识到这个解决方案。绝对提供了一些干净的代码,所以我会使用这个,但另一个解决方案实际上回答了原来的问题,以防其他用户在这里遇到几十年的问题(加上我在其他SO问题/答案中看到过lambda,但从未使用它们我)。 – user3000724

相关问题