博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成器
阅读量:5052 次
发布时间:2019-06-12

本文共 1161 字,大约阅读时间需要 3 分钟。

生成器: 1.如果一个函数调用时返回的是一个迭代器,那这个函数就叫做生成器(generator) 2.如果函数中包含yield语法,那这个函数就会变成生成器 作用: 这个yield的主要作用,可以使函数中断,并保持中断状态, 中断后,代码可以继续往下执行,过一段时间还可以再次重新调用这个函数,从上次yield的下一句开始执行
#例子1def Foo(amount):    while amount >0:        amount -= 1        yield 1    #函数中有yield语法,函数就变成了生成器        print("握草,败家仔又来取钱!")ATM = Foo(3)      #默认生成器只能在创建时传一次参数(不过可以通过send()方法来赋值传参)# print(ATM)      #生成器在调用时不会直接执行 
print("本次提现:%s万元\n"%ATM.__next__()) #需要通过__next__()方法来依次调用print("本次提现:%s万元\n"%ATM.__next__())print("本次提现:%s万元\n"%ATM.__next__())

#例子2#使用yield实现单线程中的异步并发效果'''yield方法即可以赋值也可以有返回值1. variable = yield    这样是给variable赋值2. yield 100           这样是返回值(返回值为100)'''import timedef consumer(name):    print("%s 准备吃包粽子了"%name)    while True:        zongzi = yield  #send(i)会给yield赋值,然后yield在赋值给zongzi这个变量        print("粽子[%s]来了,被[%s]吃了!"%(zongzi ,name))def producer(name):    a = consumer('A')    b = consumer('B')    a.__next__()    b.__next__()    print("%s准备做粽子了!"%name)    for i in range(10):        time.sleep(1)        print("做了2个粽子!")        a.send("最大的粽子")   #给yield赋值        b.send(i)   #给yield赋值producer("eric")

 

转载于:https://www.cnblogs.com/l729414559/p/6876851.html

你可能感兴趣的文章
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
感谢青春
查看>>
Jquery Uploadify4.2 falsh 实现上传
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
shell判断网络主机存活
查看>>
根据时间戳,增量同步数据的解决办法
查看>>
03 SeekBar 音频播放拖拽进度条
查看>>
自定义view实现阻尼效果的加载动画
查看>>
清北学堂的小技巧和小收获
查看>>
模型压缩方向一个很牛的paper
查看>>
Android--AsyncTask异步加载详解
查看>>