
Python 3 yield 简介
Python 3 yield stmt 停止一个函数的执行并向调用者返回一个值。这使得代码可以输出一个连续的值时间。此外,它还可以用来委托给任何子迭代器。当生成器再次被调用时,状态被恢复,函数从它遇到的yield语句开始恢复,就像之前的yield没有被调用和函数一样。
什么是Python 3 yield?
- 在 python 中, yield 关键字不太出名,然而它有很多用途。在 python 中, yield 的作用类似于函数的返回语句。当这样做的时候,方法会返回一个生成器。然后,这个生成器可以用来通过迭代来提取东西。
- 来自表达式的yield允许一个生成器将一些动作外包给另一个生成器。这允许代码的收益率部分并放在不同的生成器中。此外,子生成器可以返回一个值,委托的生成器可以使用该值。
- 而从表达式中产生的yield则是为了委托生成器。
如何使用Python 3 yield?
Python 3 yield 是一个简单明了的语句。它的主要作用是以与返回语句相同的方式管理函数。例如,下面的步骤展示了如何使用Python 3的yield,如下所示:
- 当我们使用一个表达式或调用一个生成器函数时,我们会得到一个生成器,它是一个特殊的迭代器。我们可以通过将其赋值给一个变量来利用这个生成器。
- 当我们使用生成器的特殊方法时,如next被执行到yield。
- 当我们调用生成器的方法时,我们可以恢复函数的执行。因此,所有的函数评估都在屈服后立即恢复。使用许多 Python 的 yield stmt 演示了这一点。
- 在Python中使用yield stmt时,程序停止运行;停止后,它将返回数值。在函数暂停的时候,那么它的当前状态被存储起来。这包含任何生成器特定的变量绑定。
- 下面的例子显示了如何使用python 3的收益率,如下所示。
在下面的例子中,我们使用了yield来显示数字。为了显示这个数字,我们每次都使用了yield。
代码
def py_yield ():
yield 11
yield 13
yield 15
yield 11
yield 13
yield 15
yield 11
yield 13
yield 15
for py_val in py_yield ():
print (py_val)
输出

Python 3 yield 生成器
- yield表达式将函数转换为一个生成器。yield表达式可以通过只返回一部分数据来节省内存。
- 要使生成器在 python 中成为函数,请使用 yield 关键字。yield 只能在一个函数的主体中使用。因此,一个带有 yield 表达式的函数默认情况下将是一个生成器函数。
- 当我们使用 yield 时,我们保存函数的局部状态并返回表达式。在 python 中使用 yield stmt 时,程序会暂停该函数的执行。
- 下面的例子显示了Python 3的yield生成器,如下。
代码
def py_yield ():
yield 11
yield 13
yield 15
yield 17
yield 19
py = py_yield ()
for py1 in py :
print (py1)
输出

- 生成器函数和生成器表达式可以用来生成生成器。
- 生成器函数没有返回值,而是有一个 yield 关键字。在创建生成器函数时,必须包含一个 yield 关键字。
- 生成器是可迭代的生成器对象,由函数返回。因为我们可以使用for-loop或next或list方法来获得实际的值,而不是一次性的整个列表。
Python 3 yield 方法
- 生成器对象由 Python yield 返回。生成器是专门的函数,必须通过迭代来获得所需的结果。
- yield 关键字将提供的表达式转换为生成器函数,并返回生成器对象。
- Python 3的yield生成器使用以下方法。下面的例子显示发送方法如下。
代码
def py_yield ():
py_num = 0
while True:
if py_pal (py_num):
py = (yield py_num)
if py is not None:
py_num = py
py_num += 1
print ("Yield method")
输出

- 函数 py_yield 中的 yield 关键字被定义为 "python 3 yields." 输出被打印出来;而不是实值,它返回生成器对象。
代码
def py_yield ():
yield "python 3 yield"
py = py_yield ()
print (py)
输出

产量是如何工作的?
- yield 关键字会暂停生成器函数的执行,并将 yield 关键字之后的表达式返回给生成器的调用者。它类似于返回关键字,但基于生成器。
- 当生成器的代码执行在一个yield表达式上暂停时,yield生成器会暂停并返回生成器的新值。当next被再次调用时。
- Python 3 yield保存的内存分配开销被保持在最低水平。然而,由于先前的状态被保留下来,流程并没有从头开始。
- 下面的例子显示了yield在python中的工作原理,如下所示。在下面的例子中,我们用 yield 关键字创建了一个 py_ev 函数。我们还使用了for循环来打印数字。
代码
def py_ev (py_list) :
for p in py_list:
if p % 2 == 0:
yield p
py_list = [11, 14, 25, 16, 27]
print ("Org List : " + str(py_list))
print ("Even List No.")
for q in py_ev (py_list):
print (q)
输出

- 下面的例子显示了yield在Python中的工作原理nike是如下的。在下面的例子中,我们用yield关键字创建了py_sq函数。我们还使用了一个while循环来打印数字。
代码
def py_sq ():
p = 1
while True:
yield p*p
p += 1
for py_num in py_sq():
if py_num > 50:
break
print(py_num)
输出

结论
在 python 中,yield 关键字不太为人所知,但它却有很多用途。在python中,yield的作用类似于一个函数的返回语句。当这样做的时候,方法会返回一个生成器。然后,这个生成器可以用来通过迭代来提取东西。