python生成器和迭代器 装饰器,Python 生成器、迭代器和装饰器

1 生成器

定义

(1)采用惰性计算的方式

(2)无需一次性存储海量数据

(3)一边执行一边计算,只计算每次需要的值

(4)实际上一直在执行next()操作,直到无值可取

生成器表达式

(返回值 for 元素 in 可迭代对象 if 条件)

生成器函数——yield

在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行

2 迭代器

可迭代对象

可直接作用于for循环的对象统称为可迭代对象:Iterable

可以使用isinstance()判断一个对象是否是Iterable对象

(1)列表、元组、字符串、字典、集合、文件

(2)生成器

迭代器

可以被next()函数调用并不断返回下一个值,直至没有数据可取的对象称为迭代器:Iterator

可以使用isinstance()判断一个对象是否是Iterator对象

(1) 生成器都是迭代器

(2) 列表、元组、字符串、字典、集合不是迭代器

可以通过iter(Iterable)创建迭代器

(3)zip enumerate 等itertools里的函数是迭代器

(4) 文件是迭代器

(5)迭代器是可耗尽的

(6)range()不是迭代器

3 装饰器

原因

(1)需要对已开发上线的程序添加某些功能

(2)不能对程序中函数的源代码进行修改

(3)不能改变程序中函数的调用方式

实现

(1)嵌套函数实现

(2)语法糖

一装饰就执行,不必等调用

你可能感兴趣的:(python生成器和迭代器,装饰器)