裝飾器,叠代器,生成器
阿新 • • 發佈:2018-09-04
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))#幾乎不占內存
裝飾器,叠代器,生成器