当前位置:首页 > 英文周记 > 正文内容

yieldpython的简单介绍

更新时间:2026-07-17 17:52:00 周记网4年前 (2023-01-19)英文周记105

python中yield是什么意思

一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。

具体,请参考下以下资料:

Python中的yield和send

yield的用法是:记住上一次返回时在函数体中的位置,调用此函数从上一次返回的位置开始执行。 

yieldpython的简单介绍

send的用法时:send()方法返有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。 

区别:当send()的参数为None时,正好与next方法等价。在调用send()方法时,要么先调用一次next()

到函数挂起的位置,或者直接send(None)。

输出结果为:

python的关键字yield有什么作用

yield是python中定义为生成器函数,其本质是封装了  __iter__和__next__方法   的迭代器;

与return返回的区别:return只能返回一次值,函数就终止了,而yield能多次返回值,每次返回都会将函数暂停,下一次next会从上一次暂停的位置继续执行;

以下用示例说明:

def test(a,b):

   print("from test(),a+b=%d" %(a+b))

   return("我是return返回的")

def test_yield(a,b): #函数体中有yield关键字,函数就可以称为生成器函数

   print("from test_yield,a+b=%d" %(a+b))

   yield("我是第一次碰到yield关键字返回的") #程序运行时碰到yield,退出函数体并记录位置,下次调用跳过之前运行的代码

   print("from test_yield,a*2=%d" %(a*2))

   yield("我是第二次调用碰到yield关键字返回的")

print(test(11,33))

g = test_yield(11,33)

print(next(g)) #通过next()调用生成器函数

print(next(g)) #第二次调用生成器函数

'''

执行结果:

from test(),a+b=44

我是return返回的

from test_yield,a+b=44

我是第一次碰到yield关键字返回的

from test_yield,a*2=22

我是第二次调用碰到yield关键字返回的

'''

标签: yieldpython

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。