ython 3 yield 简介

210 阅读5分钟

Python 3 yield

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)

输出

Use Python yield

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)

输出

Python 3 yield generator

  • 生成器函数和生成器表达式可以用来生成生成器。
  • 生成器函数没有返回值,而是有一个 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")

输出

Python 3 yield Method 1

  • 函数 py_yield 中的 yield 关键字被定义为 "python 3 yields." 输出被打印出来;而不是实值,它返回生成器对象。

代码

def py_yield ():
  	yield "python 3 yield"
py = py_yield ()
print (py)

输出

Python 3 yield Method 2

产量是如何工作的?

  • 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 work 1

  • 下面的例子显示了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)

输出

yield work 2

结论

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