标签:one while循环 print nbsp 不同 == span 步骤 EDA
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))
标签:one while循环 print nbsp 不同 == span 步骤 EDA
原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9376915.html