【问题标题】:Return value in a callback function in PythonPython回调函数中的返回值
【发布时间】:2022-07-21 14:18:39
【问题描述】:

我有以下代码:

from time import sleep
from pybit import spot
ws_spot = spot.WebSocket(
    test=True,
    ping_interval=30,  # the default is 30
    ping_timeout=10,  # the default is 10
    domain="bybit"  # the default is "bybit"
)
def handle_message(msg):
    print(msg)

ws_spot.depth_v2_stream(
    handle_message, "ETHUSDT"
)
while True:
    sleep(1)

我想修改函数“handle_message”以便它可以返回值。我试过了

from time import sleep
from pybit import spot
ws_spot = spot.WebSocket(
    test=True,
    ping_interval=30,  # the default is 30
    ping_timeout=10,  # the default is 10
    domain="bybit"  # the default is "bybit"
)

def handle_message(msg):
    return msg

x = handle_message(msg)

ws_spot.depth_v2_stream(
    handle_message, "ETHUSDT"
)
while True:
    print(x)

但是,它不起作用,因为“味精”没有定义。 我可以知道在这种情况下如何返回值吗?谢谢。

【问题讨论】:

  • 你不能那样做。您没有调用该函数,depth_v2_stream 正在调用它。如果您想保留一些信息,则必须使用global 或将其设为类。
  • 您希望x = handle_message(msg) 做什么?没有收到消息,应该返回什么?
  • 我可以知道如何使它成为一个类吗?由于调用了“味精”。我不知道如何“返回 msg”,而是使用参数“msg”调用函数。谢谢。

标签: python


【解决方案1】:

我无法准确说出您的代码在尝试什么,但这是您需要的那种东西:

from time import sleep
from pybit import spot
ws_spot = spot.WebSocket(
    test=True,
    ping_interval=30,  # the default is 30
    ping_timeout=10,  # the default is 10
    domain="bybit"  # the default is "bybit"
)

savedmsg = None
def handle_message(msg):
    global savedmsg
    savedmsg = msg
    print(msg)

ws_spot.depth_v2_stream(
    handle_message, "ETHUSDT"
)

while not savedmsg:
    sleep(1)

print(savedmsg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2014-11-23
    • 2019-02-12
    相关资源
    最近更新 更多