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。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
原文链接:codingdict.net