装饰器
- 运用了闭包的原理
通过一个@符号将装饰器置于其要装饰的方法的上方
可以多个装饰器装饰同一个方法 - 装饰器可以用可变参数来进行不确定参数类型和数量的方法的装饰
- 多个装饰器同时装饰时的顺序我是有点乱
- 装饰器可一次定义多次使用
生成器与迭代器:
生成器
- 生成器是一种特殊的迭代器
- 生成器可用于替换循环生成容器类内容对象的一个函数中的循环部分,使其成为懒加载函数
- 最简单的生成器用法:
g =(x for x in range(,))
可以通过for i in g的循环对生成器中每一个对象进行遍历
也可以用g.next()方法,每次只返回一个生成器对象 - 生成器在函数中实现:
def gen():
x = 0
while(True):
yield x
x = x + 1
gen1 = gen()
这里的x就变成了一个可迭代的生成器对象
对这里的x进行迭代可以分别通过python的for循环或者next(gen1)进行
其中,for循环输出所有生成对象,而next()方法一次只输出一个生成对象
迭代器
实现了iter方法和next方法的类被称为迭代器
这一点其实和java是比较类似的
- 生成器一定是一个迭代器,但是迭代器未必是生成器
网友评论