📌  相关文章
📜  什么时候在Python中使用yield而不是return

📅  最后修改于: 2020-01-18 15:03:36             🧑  作者: Mango

yield语句将中止函数的执行并将一个值发送回调用方,但保留足够的状态以使函数可以在中断的地方继续执行。恢复后,该函数将在最后一次yield运行后立即继续执行。这样,它的代码就可以随着时间的推移产生一系列值,而不是立即计算它们并像列表一样将它们发送回去。
让我们看一个例子:

# Python代码,展示yield使用方法
# 使用yield构造一个生成器
def simpleGeneratorFun():
    yield 1
    yield 2
    yield 3
# 测试程序
for value in simpleGeneratorFun():
    print(value)

输出:

1
2
3

Return将指定的值发送回其调用方,而Yield可以产生一系列值。当我们要遍历一个序列,但又不想将整个序列存储在内存中时,应该使用yield。
Yield在Python 生成器中使用。生成器函数的定义类似于普通函数,但是每当需要生成值时,它都使用yield关键字而不是return来生成。如果def的主体包含yield,该函数将自动成为生成器函数。

# Python展示一个生成器例子
# 一个无限的生成器
def nextSquare():
    i = 1;
    # 开始while
    while True:
        yield i*i
        i += 1
# 测试函数
for num in nextSquare():
    if num > 100:
         break
    print(num)

输出:

1
4
9
16
25
36
49
64
81
100