码迷,mamicode.com
首页 > 其他好文 > 详细

装饰器,迭代器,生成器

时间:2018-09-04 10:33:54      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:生成器   数据   UNC   turn   表达式   方式   调用   优点   art   

1,装饰器函数

import time
def timer(func):
def inner():
start = time.time()
func()
print(time.time() - start)
return inner

@timer #==> func1 = timer(func1)
def func1():
print(‘in func1‘)


func1()

装饰器——语法糖

简单的总结一下:

  装饰器的本质:一个闭包函数

  装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展

2,可迭代对象: 

拥有__iter__方法

  特点:惰性运算

  例如:range(),str,list,tuple,dict,set

3,迭代器Iterator:

  拥有__iter__方法和__next__方法

  例如:iter(range()),iter(str),iter(list),iter(tuple),iter(dict),iter(set),reversed(list_o),map(func,list_o),filter(func,list_o),file_o

生成器Generator:

  本质:迭代器,所以拥有__iter__方法和__next__方法

  特点:惰性运算,开发者自定义

使用生成器的优点:

  1.延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用。

     2.提高代码可读性

#列表解析
sum([i for i in range(100000000)])#内存占用大,机器容易卡死
 
#生成器表达式
sum(i for i in range(100000000))#几乎不占内存

装饰器,迭代器,生成器

标签:生成器   数据   UNC   turn   表达式   方式   调用   优点   art   

原文地址:https://www.cnblogs.com/l-jie-n/p/9582366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!