day4
1.装饰器
定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能。
原则:1.不能修改被装饰的函数的代码;2.不能修改被装饰的函数的调用方式。
实现装饰器的知识储备:
1.函数即变量
2.高阶函数
a:把一个函数名当做实参传给另外一个函数
b:返回值中包含函数名
3.嵌套函数
高阶函数+ 嵌套函数= 》装饰器
2.生成器
只有在调用时才会生成相应的数据;
只记录当前位置;
只有一个__next__()方法
def fib(max): n,a,b = 0,0,1 while n < max: yield b a,b = b,a+b n = n+1 return "----done----" g = fib(6) while True: try: x = next(g) print('g:',x) except StopIteration as e: print("Generator return value",e.value) break
3.迭代器
直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,例如list、tuple、dict、set、str等,
一类是generator,包括生成器和带有yield的generator function,
这些可以直接作用于for循环的对象统称为可迭代对象:iterable,
可以使用isinstance()判断一个对象是否是iterable。
>>> from collections import Iterable >>> isinstance([],Iterable) True >>> isinstance({},Iterable) True
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
可以使用isinstance()判断一个对象是否是iterator对象。
4.内置函数
5.json 和 pickle序列化
pickle.dump(info,f) = f.write(pickle.dumps(info))
pickle.load(f) = pickle.loads(f.read())