python——函数 21yield的表达形式

Posted steven丶syw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python——函数 21yield的表达形式相关的知识,希望对你有一定的参考价值。

1、yield的作用

def foo():
    print(\'ffff\')
    while True:
        x=yield
        print(\'memeda\', x)
a=foo()
print(next(a))
print(\'==============>\')
print(next(a))
print(\'===============>\')
print(next(a))
只写一个next  步骤:进入函数体发现print(\'ffff\')打印ffff 继续向下走
发现一个yield 将函数挂起 并且返回yield的返回值 但是此段代码没有写返回值那么就会返回None
写两个next时 由在上次yield挂起的地方继续向下运行 发现一个print(\'memeda\',x)并将他打印出来
然后又进入while循环 又碰到yield 挂起 以此类推 无限循环~~~结果如下图所示:


2、send用法:

send与next用法一样都是再次触发代码的执行
但是肯定有不同之处,看下面代码
def foo():
    print(\'ffff\')
    while True:
        x=yield
        print(\'memeda\', x)
a=foo()
next(a)    #激活生成器
print(a.send(1))
此函数第一次挂起的地方就是那个yield 当你用.send(1)再次将他触发时 首先将1赋值给yield然后再将yield赋给x,再接着向后走,这就是和next不同的地方
所以此函数执行结果如下图:

3、shed(None)等同于next()
def foo():
    print(\'ffff\')
    while True:
        x=yield
        print(\'memeda\', x)
a=foo()
a.send(None)    #nest(a)
print(a.send(1))

 

 
 

以上是关于python——函数 21yield的表达形式的主要内容,如果未能解决你的问题,请参考以下文章

Python基础------生成器表达式形式面向过程编程内置函数部分

python基础之生成器表达式形式面向过程编程内置函数部分

Python基础第十天——yield的表达式形式的应用面向过程编程内置函数

Python学习之yield表达式三元表达式与生成式

Python自动化开发课堂笔记Day04 - Python基础(函数补充,模块,包)

yield的表达式形式与内置函数