gpt4 book ai didi

python - 向此类 python 函数传递更多参数

转载 作者:行者123 更新时间:2023-11-30 22:31:51 28 4
gpt4 key购买 nike

我认为这是非常基本的,但似乎无法弄清楚如何向谷歌提出正确的问题。我正在使用this python websocket client建立一些 websocket 连接。我们假设我正在使用与该页面类似的代码示例:

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 函数?

最佳答案

请记住,您需要分配回调。您而是调用函数并将返回值传递给 ws,这是不正确的。

您可以使用functools.partial将函数柯里化(Currying)为高阶函数:

from functools import partial

func = partial(on_open, "this new arg")
ws.on_open = func

当调用func时,它将调用on_open,第一个参数为“this new arg”,后跟传递的任何其他参数到func。查看文档链接中 partial 的实现以了解更多详细信息。

关于python - 向此类 python 函数传递更多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45673247/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com