gpt4 book ai didi

python - Monocle 是否使用了事件驱动编程的错误示例?

转载 作者:行者123 更新时间:2023-12-01 06:10:47 25 4
gpt4 key购买 nike

https://github.com/saucelabs/monocle

下面的代码作为标准事件驱动编程的示例:

def get_cmd(conn):    conn.read_until("\n", callback=handle_cmd)def handle_cmd(conn, cmd):    if cmd.type == "get-address":        # keep track of the conn so we can write the response back!        def callback(result):            handle_user_query_result(conn, result)        db.query(cmd.username, callback)    else:        conn.write("unknown command")def handle_user_query_result(conn, user):    conn.write(user.address)

虽然我不明白为什么需要关闭。 “跟踪 conn”与第一个函数“get_cmd”的工作方式相矛盾。另外,事件驱动框架通常不让您传递参数吗?

我猜这将是一个更合理的例子:

def get_cmd(conn):    conn.read_until("\n", callback=handle_cmd)def handle_cmd(conn, cmd):    if cmd.type == "get-address":        db.query(cmd.username, callback=handle_user_query_result, params=conn)    else:        conn.write("unknown command")def handle_user_query_result(result, params):    user = result    conn = params    conn.write(user.address)

我错了吗?

最佳答案

我想说这是一个糟糕的例子,因为它没有显示基于回调的事件编程有多糟糕。闭包不是必需的,但它(大概)用于保持事物的逻辑组织,使代码更易于阅读/推理。将回调编写为闭包是很常见的。该示例的重点是说明避免回调如何使代码更加简洁,可以说更易于阅读/编写/推理。就我个人而言,我不喜欢基于回调的编程,使用过 twistednode.js最近有一点。使用其中任何一个来编写应用程序,然后您就会欣赏 Monocle 的方法(或者不喜欢,有些人更喜欢基于回调的方法)。

关于python - Monocle 是否使用了事件驱动编程的错误示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086926/

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