何时在Python中使用 yield 而不是 return ?
yield 语句暂停函数的执行并将一个值发送回调用者,但保留足够的状态以使函数能够从中断的地方恢复。恢复后,函数会在最后一次 yield 运行后立即继续执行。这允许它的代码随着时间的推移产生一系列值,而不是一次计算它们并将它们像列表一样发送回来。
让我们看一个例子:
# A Simple Python program to demonstrate working
# of yield
# A generator function that yields 1 for the first time,
# 2 second time and 3 third time
def simpleGeneratorFun():
yield 1
yield 2
yield 3
# Driver code to check above generator function
for value in simpleGeneratorFun():
print(value)
输出:
1
2
3
Return将指定的值发送回其调用者,而Yield可以生成一系列值。当我们想要迭代一个序列但又不想将整个序列存储在内存中时,我们应该使用 yield。
产量用于Python生成器。生成器函数的定义与普通函数一样,但每当需要生成值时,它都会使用 yield 关键字而不是 return。如果 def 的主体包含 yield,则该函数自动成为生成器函数。
# A Python program to generate squares from 1
# to 100 using yield and therefore generator
# An infinite generator function that prints
# next square number. It starts with 1
def nextSquare():
i = 1
# An Infinite loop to generate squares
while True:
yield i*i
i += 1 # Next execution resumes
# from this point
# Driver code to test above generator
# function
for num in nextSquare():
if num > 100:
break
print(num)
输出:
1
4
9
16
25
36
49
64
81
100