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

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))
 
 

原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9376915.html

时间: 2024-08-24 12:48:56

python——函数 21、yield的表达形式的相关文章

day22:yield的表达形式,面向过程变成

一.yield的表达形式 def foo(): print('starting') while True: x=yield None#return 2 print('value :',x) g=foo() print(next(g)) print(g.send(2)) 运行结果: starting #运行函数,打印starting后碰到yield停住 None #next()触发后 yield将None赋值给x,打印None后循环碰到yield停住 value : 2 #g.send(2)将2赋

yield的表达式形式、面向过程编程(grep -rl 'root' /etc)

一.yield的表达形式 def foo(): print('starting') while True: x=yield None#return 2 print('value :',x) g=foo() print(next(g)) print(g.send(2)) 运行结果: starting #运行函数,打印starting后碰到yield停住 None #next()触发后 yield将None赋值给x,打印None后循环碰到yield停住 value : 2 #g.send(2)将2赋

python函数第5天(day 24)

可迭代的:对象下有__iter__方法的都是可迭代的对象 迭代器:对象.__iter__()得到的结果就是迭代器 迭代器的特性: 迭代器.__next__() 取下一个值 优点: 1.提供了一种统一的迭代对象的方式,不依赖于索引 2.惰性计算 缺点: 1.无法获取迭代器的长度 2.一次性的,只能往后取值,不能往前退,不能像索引那样去取得某个位置的值 生成器:函数内带有yield关键字,那么这个函数执行的结果就是生成器 生成器本质就是迭代器 def func(): n=0 while True:

python函数(五)—yield的表达式形式

函数体内含有yield关键字,那该函数的执行结果是生成器对象 生成器对象的本质就是迭代器,所以yield的功能是 1.把函数的执行结果做成迭代器 2.可以返回多次值,而return只能返回一次值 3.可以挂起函数的执行 ======================================= yield语句形式 yield 1 yield的表达式形式 x=yield next(g) g.send('xxx') 示例 def deco(func): def wrapper(*args,**k

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

鸡汤: 首先,我一定要怀着一颗感恩的心,感谢这个世界上与我接触的人,不管你们对我是关心.是帮助.是冷漠.甚至是厌恶,我都感谢你们. 因为关心和帮助让我感受到了对爱的希望, 因为冷漠和厌恶让我感悟到了人生的残酷, 让恨的怒气和爱的力量化作一股永生不灭的的动力,使我在这条未知的人生道路上   继续写下新的篇章. --奔跑吧小白 一.yield的表达式形式的应用 send():具有传值和next的效果.先暂停的位置传值,再next生成器 send(None):表示不传值,只有next的效果,相当于直接

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

yield的功能: 1. 与return类似,都可以返回值,不一样在于,yield可以返回多个值而且可暂停,再次执行可继续下一步操作,return到了就停止不在继续运行. 2.为封装好的的函数能够使用__iter__和__next__方法, 3.遵循迭代器的取值方式 .__next__(),触发函数的执行和函数的保存都是通过yeild保存的.  . 一:yield的表达式形式 def foo(): print('starting') while True: x=yield #yield的表达式形

python函数、装饰器、迭代器、生成器

5月21日,请假结婚,然后性格惰性来了,不怎么想看视频和笔记,性格中的弱点开始出现,开始做的不错,渐渐开始松懈,直至放弃--- 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递,它的应用形式也被称为高阶函数,函数的特性如下: a. 可以被引用 1 # def foo(): 2 # print('from foo') 3 # 4 # func = foo

python函数中文手册(网友提供)

内置函数 一, 文档说明 原始文档来自于python v2.7.2 中文译文和用法尚不完全,您可以自由修改和完善, 您可以在文档结尾鸣谢添上您的名字,我们将会感谢您做的 贡献! 二,函数列表 1,取绝对值 abs(x) Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex 

python_递归_协程函数(yield关键字)_匿名函数_模块

协程函数(yield) 协程函数:生成器:yield关键字的另一种用法 例:装饰器自动初始化函数(生成器函数)deco 1 yield的语句形式: yield 1 2 #yield的表达式形式: x=yield 3 4 5 6 #协程函数 7 8 def deco(func): 9 def wrapper(*args,**kwargs): 10 res=func(*args,**kwargs) 11 next(res) 12 return res 13 return wrapper 14 15