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())

浙公网安备 33010602011771号