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

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

# 生成器:自定义的迭代器对象 def fn():     print(1)     yield 666     print(2)     yield 888     print(3) # print(fn()) """ obj = fn()  # generator object => [666, 888] print(obj) # 去生成器中执行代码,拿到遇到的第一个yield后面的值,并停止运行 print(obj.__next__()) # 再接着上一个yield,再进行往下执行代码,再拿到下一个个yield后面的值,并停止运行 print(obj.__next__()) # 重复上面的过程,如果没有遇到yield,就报错 print(obj.__next__()) """ for v in [666, 888]:     print(v) print('--------------------') # 将传入的值扩大两倍返回 # def fn1(a, b, c): #     yield a * 2 #     yield b * 2 #     yield c * 2 # # for v in fn1(10, 20, 30): #     print(v) # 解决方案 # def fn1(*args): #     i = 0 #     while i < len(args): #         yield args[i] * 2 #         i += 1 # # for v in fn1(10, 20, 30, 40, 50): #     print(v) # 依次获取阶乘 1! 2! 3! ... def fn2():     total = 1     count = 1     while True:         total *= count         yield total         count += 1 obj = fn2() print(obj.__next__()) print(obj.__next__()) print(obj.__next__()) print(obj.__next__()) print(obj.__next__()) print('=================') # 了了解 # def fn3(): #     msg = yield 1 #     print(msg) #     yield 2 # obj3 = fn3() # print(obj3.__next__()) # # 1.send会为当前停止的yield传入参数,内部可以通过yield来接收传入的参数 # # 2.send自身也会调用__next__()去获取下一个yield的结果 # result = obj3.send('ooo') # print(result) def fn4(peoples):     count = 0     print('%s在面试' % peoples[count])     while count < len(peoples):         name = yield peoples[count]         count += 1         print(name + "叫来%s来面试" % peoples[count]) peoples = ['张三', '李四', '王五'] obj4 = fn4(peoples) name = obj4.send(None)  # 第一次没有yield接收值,所以只能调__next__(),或是send(None) print(name + '面试完毕') while True:     try:         name = obj4.send(name)         print(name + '面试完毕')     except Exception:         print('所有人面试完毕')         break

转载于:https://www.cnblogs.com/qiangyuzhou/p/10787173.html

你可能感兴趣的文章
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>