我有以下代碼:你可以執行一行作爲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