我認爲這是非常基本的,但似乎無法弄清楚如何向google提出正確的問題。我使用this python websocket client來建立一些websocket連接。讓我們只是假設我用類似網頁的代碼示例:將更多參數傳遞給這種類型的python函數
import websocket
import thread
import time
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
ws.send("Hello")
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run,())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
所以我試圖做的是增加更多的參數給on_open
功能,這樣的事情:
def on_open(ws, more_arg):
def run(*args):
ws.send("Hello %s" % more_arg)
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run,())
但我無法弄清楚如何通過這些參數,所以我在主線程嘗試:
ws.on_open = on_open("this new arg")
,但我得到的錯誤:
TypeError: on_open() takes exactly 2 arguments (1 given)
我該如何將這些新的參數傳遞給我的on_open
函數?
@cᴏʟᴅsᴘᴇᴇᴅ是既幫助了,但我最終喜歡你的'partial'使用更好,我會接受的。 –