美文网首页
python中的yield

python中的yield

作者: 小草_fdba | 来源:发表于2017-08-03 15:18 被阅读0次

第一次看到yield是在python学习手册上,在python表达式操作符这一节:
操作符 :yield x 描述:生成器函数发送协议
然后本菜鸟陷入了懵逼,生成器函数发送协议什么鬼。。于是乎,开始搜索。
首先看一个例子:

def fab(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        yield b 
        a, b = b, a + b 
        n = n + 1 

 for n in fab(5): 
...     print(n) 
 

打印的结果为1,1,2,3,5
yield的作用就是把函数变成一个迭代器,python解释器会将他视为一个generator,调用fab(5)不会执行fab函数,而是在for循环时每次执行一次fab函数,执行到yield就是返回一个值(这是有点类似于return),下次迭代时将从yield下一行开始执行。循环第一次到yield b时返回b的值,b为1,a为0,第二次返回b的值,a=1,b为0+1=1,第三次为1+1=2,

函数有了yield之后,
函数加()就变成了生成器
函数中如果有return就代表生成器的中止,会直接报错

生成器有一个send方法,send有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。send()之前要代码需停在yield那一行,比如先调用一个next()方法

相关文章

  • Python yield关键字

    Python中yield关键字解释 这篇文章关于python的yield关键字。并且文章中会解释什么是yield,...

  • python 生成器和协程

    yield 对于python生成器中的yield来说,yield item会产出一个值,提供给next()的调用方...

  • python yield和yield from用法总结

    python yield和yield from用法总结 yield 作用: 注: generator的next()...

  • yield的作用理解

    Python中的yield和java中的不同,java中的yield是妥协的意味,让出cpu给其他线程执行,但不保...

  • Thread yield 方法

    yield 在其他语言例如 Python 或者 C# 也有协程的概念,在 Java 中 Thread.yield ...

  • python中的yield

    第一次看到yield是在python学习手册上,在python表达式操作符这一节:操作符 :yield x 描述...

  • python中的yield

    show me the code yield一般用在用循环功能的函数内,用在把循环里的数据提取出来,有点像OC的b...

  • Python 中的 yield

    yield 优化内存占用 有这样一个例子: return_test() 返回一个 list,然后打印这个 list...

  • python中的yield

    工作了之后基本没怎么用到yield,都忘了,专门查了下https://blog.csdn.net/mieleizh...

  • python: yield

    python: yield

网友评论

      本文标题:python中的yield

      本文链接:https://www.haomeiwen.com/subject/pnlplxtx.html