分配(产量)给变量

2024-04-25 21:57:17 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我想指出,我对Python不是特别熟悉。我最近被迫熟悉了一个代码示例,它让我的下巴半开着,我无法“翻译”它。我看过的各种文件和文章也无济于事:

以下是所讨论函数的简化版本:

@coroutine
def processMessage(receiver):
    global userID
    #...
    while True:
        msg = (yield)
        try:
            #...
        except Exception as err:
            #...

我无法理解它的作用,因此无法“遍历”代码。我的问题是“这个函数做什么?”以及“这个功能遵循什么顺序?”在

让我困惑的是msg = (yield)。我不知道要实现什么。直觉告诉我,它只是在新信息通过时抓住它们,但我不明白为什么要这样。如果有人知道,如果我提供了足够的信息,我将非常感谢你的解释。在

Try子句:

^{pr2}$

p.S.receiver是一个套接字接收器。在


Tags: 文件the函数代码信息示例文章msg
1条回答
网友
1楼 · 发布于 2024-04-25 21:57:17

生成器中的语法variable = (yield some_value)执行以下操作:

  • 它将some_value返回给调用它的代码(通过nextsend
  • 下一次调用它时(通过.next.send(another_value)),它将another_value分配给variable,并继续执行。在

例如,假设您有一个生成器函数:

>>> def f():
...     while True:
...         given = (yield)
...         print("you sent me:", given)
...

现在,让我们调用f。这会给我们一个发电机。在

^{pr2}$

当我们第一次使用发电机时,我们不能给它发送数据

>>> next(g)

此时它只计算了yield。。。当我们现在调用.send时,它将从该点继续,将我们发送给它的数据赋给给定的变量

>>> g.send("hello")
('you sent me:', 'hello')
>>> g.send("there")
('you sent me:', 'there')

在特定的示例代码中,有一个生成器:

  • 从外面得到了一条信息。。。有东西将调用.send(some_msg)
  • 它将处理该消息,然后返回给外部调用者,然后外部调用者将向它提供另一条消息。在

相关问题 更多 >