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

如何在Python自定义函数的while循环中迭代返回值且不中断循环?

解决方法:使用生成器(yield)

你可以用Python的生成器来实现每次迭代返回值的需求,把return替换成yield即可。yield不会直接终止函数,而是返回当前值并暂停函数执行,下次调用时会从暂停的位置继续运行循环。

修改后的代码

def func(x):
    n = 3
    while n > 0:
        x = x + 1
        yield x  # 用yield替代return,实现迭代返回
        n -= 1  # 必须递减n,避免无限循环

调用生成器的方式

  1. 用for循环遍历所有返回值:
for result in func(6):
    print(result)

输出结果:

7
8
9
  1. 一次性获取所有结果(转为列表):
results = list(func(6))
print(results)  # 输出 [7, 8, 9]
  1. 逐个获取结果(用next()):
gen = func(6)
print(next(gen))  # 7
print(next(gen))  # 8
print(next(gen))  # 9

关键说明

  • 原代码除了return会终止循环外,还缺少n -= 1的逻辑,若没被return打断会陷入无限循环,修改时必须补上这一步。
  • 生成器函数调用后不会立即执行,只有在迭代(比如for循环、next()调用)时才会逐步执行循环体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:15:45