1. 程式人生 > >裝飾器,叠代器,生成器

裝飾器,叠代器,生成器

sum 大數據量 func 擁有 特點 就是 lin 優點 map

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))#幾乎不占內存

裝飾器,叠代器,生成器