python全栈开发 * 13知识点汇总 * 180619
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的更多相关文章
- python全栈开发 * 10知识点汇总 * 180612
10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...
- python全栈开发 * 32知识点汇总 * 180717
32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...
- python全栈开发 * 01知识点汇总 * 180530
一 python简介. 1.创始人: 吉多 .范罗苏姆 \ (Guido van Rossum). 2.时间 : 1989年. 3.主要应用领域 : 云计算 \ WEB开发 \ ...
- python全栈开发 * 26知识点汇总 * 180709
26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...
- python全栈开发 * 12 知识点汇总 * 180530
12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...
- python全栈开发 * 36知识点汇总 * 180721
36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...
- python全栈开发 * 31知识点汇总 * 180716
31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...
- python全栈开发 * 24 知识点汇总 * 180705
24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...
- python全栈开发 * 27知识点汇总 * 180710
27 time os sys 模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...
随机推荐
- 跟着柴毛毛学Spring(3)——简化Bean的配置
通过前面的学习.我们会感觉到对于一个有较多Bean的大项目,Spring的配置会比較复杂. 那么接下来我们就介绍怎样简化Spring的配置. 简化Spring的配置主要分为两类: 1. 自己主动装配 ...
- CentOS 7.x 用shell增加、删除端口
一.在/usr/local/sbin/下创建port文件,不要扩展名,并给权限 chom 777 port #!/bin/bash num=$# ok=0 if [ ${num} == 1 ]; t ...
- 【Nginx】Nginx在Linux下的入门介绍
Nginx的安装 下载.解压 从Nginx下载安装包,我下的是nginx-1.8.0.tar.gz.解压后的目录为: [root@blog third_package]# tar -zxf nginx ...
- Python类中的装饰器在当前类中的声明与调用
[本文出自天外归云的博客园] 我的Python环境:3.7 在Python类里声明一个装饰器,并在这个类里调用这个装饰器.代码如下: class Test(): xx = False def __in ...
- 如何使用maven优雅地管理项目版本号
原文: https://blog.csdn.net/TeleDCOS/article/details/79853782
- 什么是面向切面编程AOP--知识点汇总
最近在学这方面的内容,读到的这段话我感觉说的很清楚了:这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. 面向切面编程(AOP是Aspect Orie ...
- Android开发怎么让自己的APP UI漂亮、大方(规范篇一)
首先,笔者是站立在开发者的角度来看UI设计的,欢迎专业人士提供指导,不多说,来看怎么把UI设计和开发高效结合起来~ 一.约定APP开发中的一些规则 1.大部分图标满足HDPI(高清)即可,比如:大众点 ...
- 用WordPress建立专业网站教程 (一步步建站, 一步也不少)
最新美国域名中心US Domain Center: http://www.usdomaincenter.com/ 建站教程 (10分钟上线, 无需备案): https://www.qiyewp.com ...
- ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)
problemCode=3886">ZOJ 3886 题意: 定义一种NicoNico数x,x有下面特征: 全部不大于x且与x互质的数成等差数列,如x = 5 ,与5互素且不大于5的数 ...
- Mysql推荐使用规范(转)
一:基础规范 1.使用InnoDB存储引擎 支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 2.推荐使用utf8mb4字符集 无需转码,无乱码风险, 支持emoji表情以及部 ...