You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否简化实现延迟返回输入值的Python生成器?

更简洁的延迟生成器实现

嘿,这个需求很有意思!你想要的是一个延迟生成器——每次通过send()传入的值,会在下一次迭代时被返回。你的现有实现用了三个变量,逻辑确实有点绕,其实我们只需要一个变量就能搞定,而且代码更清晰易懂。

简化版实现

def delayed_generator():
    previous_value = None
    while True:
        current_value = yield previous_value
        previous_value = current_value

验证交互效果

我们来按照你的示例测试一下:

>>> g = delayed_generator()
>>> g.send(None)  # 启动生成器,返回初始的None(这一步是必须的,用于激活生成器)
None
>>> g.send('this')  # 传入'this',返回上一次的None(示例中这一步无输出,符合预期)
None
>>> g.send('is')
'this'
>>> g.send('delayed')
'is'
>>> g.send('!')
'delayed'

完全匹配你想要的效果!

原理说明

这个实现的核心逻辑非常简单:

  • 用previous_value保存上一次传入的值,初始为None
  • 每次yield previous_value:返回之前保存的值,同时暂停生成器,等待新的输入
  • 接收新的current_value后,把previous_value更新为这个新值,进入下一次循环

相比你原来的三个变量版本,这个实现只用了一个变量,逻辑线性且直观,维护起来也更方便。

内容的提问来源于stack exchange,提问作者Ziofil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:36:29