python中使用yield的协程

2024-03-29 10:51:33 发布

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

我试图用yield运算符理解python中的coroutines。你知道吗

def minimize():
    current = yield
    while True:
        value = yield current
        current = min(value, current)

我有一个函数minimize(),它返回到那个点之前发送给函数的所有值的最小值。你知道吗

it = minimize()
next(it)        
print(it.send(10))
print(it.send(4))
print(it.send(22))
print(it.send(-1))

>>>
10
4
4
-1

我有一个关于函数的问题。你知道吗

current = yeild实现了什么。根据我对生成器上下文中yield的理解,yeild在生成器对象上使用next()时返回下一个值。你知道吗


Tags: 函数sendvaluedefit运算符currentnext
1条回答
网友
1楼 · 发布于 2024-03-29 10:51:33

让我们遵循流控制,缩进项是minimize()生成器:

it = minimize()   # Creates generator
next(it)
    current = yield       # suspends on yield (implicit None)
print(it.send(10))
    current = 10          # resumes
    while True:
        value = yield 10  # suspends on yield
# Output: 10
print(it.send(4))
        value = 4         # resumes
        current = min(4, 10)
    while True:
        current = yield 4
# Output: 4
print(it.send(22))
        value = 22
        current = min(22, 4)
    while True:
        current = yield 4
# Output: 4
print(it.send(-1))
        value = -1
        current = min(-1, 4)
    while True:
        current = yield -1
# Output: -1

相关问题 更多 >