迭代器、生成器、迭代器

来源:互联网 发布:网络检测未通过 编辑:程序博客网 时间:2024/06/02 05:54

迭代器

有__iter__方法 就是可迭代对象

__iter__() 返回一个迭代器

迭代器具备__next__方法和__iter__方法,一般定义一个类,里面有这两个方法

迭代器最核心的功能就是可以通过next()函数的调用来返回下一个数据值。如果每次返回的数据值不是在一个已有的数据集合中读取的,而是通过程序按照一定的规律计算生成的,那么也就意味着可以不用再依一个已有的数据集合,也就是说不用再将所有要迭代的数据都一次性缓存下来供后续依次读取,这样可以节省大量的存储(内存)空间。
for in 循环 tuple list  都可以接受可迭代对象

生成器:列表生成式的[]变为() 
有yield 就是为生成器,yield返回的为一个生成器对象

装饰器

万能装饰器
def log(fun):
def inner(*args,**kwargs):
print(time.time())
res = fun(*args,**kwargs)
print(time.time())
return res
return inner


@log
def add():
pass

import functools

装饰器后原函数的属性会改变,如想要不变,则在装饰器中,加入@
functools.wraps(fun)


函数的
partial应用
  函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

import 导入包时,会维护一个副本(缓存信息)使用的为内存中的文件,并不是磁盘中的文件
方法一:关闭后重新开启
方法二:import 
imp.reload(调用模块)