13 迭代器和⽣成器
一.迭代器
1.以通过dir函数来查看类中定义好的所有⽅法
2.__iter__ 用来获取当前对象的迭代器
3.__next__ 获取可迭代对象的元素
s="我爱吃火锅"
ret=dir(s) # 查看字符串s中定义好的所有方法
print(ret)
it=s.__iter__() # 用来获取当前对象的迭代器
print(it.__next__()) # 获取可迭代对象的元素 第一个
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__()) # 最后一个元素后.继续__next__会报错 stop iteration def func(): #一次把可迭代对象元素循环遍历出来
lst = []
for i in range(0, 10000):
lst.append("服装"+str(i))
return lst
print(func()) def func():
for i in range(0,10000):
yield "服装"+str(i)
gen=func()
for i in range(0,65): # 分批次按需求来拿元素
ret=gen.__next__()
print(ret)
二.生成器
1.什么是生成器 ⽣成器实质就是迭代器
2.在python中有三种⽅式来获取⽣成器:
(1)通过生成器函数
def func():
print((111))
yield "222"
gen=func() # 如果函数中有yield,则此函数为生成器函数
ret=gen.__next__() # 生成器实质是迭代器,可直接执行__next__()
print(ret)
(2)yield 和return 的区别.
# 程序中有yield ,函数是生成器函数,访问生成器函数,函数不会执行,返回一个生成器.
# 生成器执行__next__,执行到下一个yield.
# yield 和return 基本相同,只是yield只负责返回,不会结束函数
# return 结束函数
(3) 生成器的作用 : 节省内存
(4) send 和 yield 的区别:send 给上一个yield位置传递一个值进去.但是__next__不能. 不能给最后⼀个yield发送值
(5) send() 第一次必须用__next__ (因为上面没有yield了.
def func():
print("想吃饭了")
a=yield "想吃麻辣烫"
print("想吃"+a)
b=yield "还想吃什么"
print("想吃"+b)
c=yield "呷哺呷哺"
print(c)
gen=func()
ret=gen.__next__()
print(ret)
ret1=gen.send("麻辣小龙虾")
print(ret1)
ret2=gen.send("海底捞")
print(ret2)

python全栈开发 * 13知识点汇总 * 180619的更多相关文章

  1. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  2. python全栈开发 * 32知识点汇总 * 180717

    32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...

  3. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  4. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  5. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  6. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  7. python全栈开发 * 31知识点汇总 * 180716

    31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...

  8. python全栈开发 * 24 知识点汇总 * 180705

    24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...

  9. python全栈开发 * 27知识点汇总 * 180710

    27   time  os  sys  模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...

随机推荐

  1. 【Geek软技能】程序员,为什么写不好一份简历?

    一份好简历会是一份好工作的开端. 为什么?沧海也会遗珠   简历,是如此重要,它是获得一份满意工作的敲门砖,但不同的简历敲门的声响可不同. 但很多时候简历给人的感觉也似乎微不足道,因为没有人会真正细致 ...

  2. asp.net mvc 实战化项目之三板斧

    laravel实战化项目之三板斧 spring mvc 实战化项目之三板斧 asp.net mvc 实战化项目之三板斧 接上文希望从一张表(tb_role_info 用户角色表)的CRUD展开asp. ...

  3. 对 IIC 总线的理解、调用函数以及常见面试问题

    一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线.一根是数据线SDA, ...

  4. 小型互联网公司的IT系统建设思路

    ​​最近一些想创业的一帮兄弟来问我,准备借助互联网的翅膀,做某某事情,并想尽快的做出一个系统平台. 我给的思路,分6个步骤: 需求-> 灵感设计 ->实现 ->迭代改进 ->成 ...

  5. 突破拐点:企业成长的S曲线

    1.企业成长的不同时期 初创期:初创前几年,最重要的创业激情,靠“蓝色小药丸”,断层期切入,不断试错玩命干(产品定位.商业模式.融资源.找关系.辅渠道),并最终完成赢利模式,得以生存. 成长期:通过快 ...

  6. python环境与PyDev IDE配置

    工具eclipse:我目前用是的Eclipse oxygen.历史版本可参考:https://wiki.eclipse.org/Older_Versions_Of_EclipsePython:http ...

  7. C#学习笔记(34)——委托传值(回忆版)

    说明(2018-4-6 20:31:03): 1. 昨天晚上看三层,看完第一天的最后一节,会员的修改和增加,感觉欲仙欲死,果断关机睡觉. 2. 上午搞了半天哈利波特的原版书epub的下载,结果都没发现 ...

  8. 理解REST和RPC

    REST 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 网站开发,完全可以采用软件开发的模式.但是传统上,软件和网络是两个不同的领域,很少有交集:软件开发主要针对单机环境,网络则主要研究 ...

  9. Spring钩子方法和钩子接口的使用详解

    本文转自:http://www.sohu.com/a/166804449_714863 前言 SpringFramework其实具有很高的扩展性,只是很少人喜欢挖掘那些扩展点,而且官方的Refrenc ...

  10. hdoj:2049

    #include <iostream> using namespace std; ]; /* n 个 数中 m个错排 转化为:充n个数中选取m个数,共有C(n,m)中,选取的m个数进行全部 ...