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

 

posted @ 2018-02-26 09:57  会飞的太阳  阅读(93)  评论(0编辑  收藏  举报