Python生成器、迭代器、裝飾器
最簡單的生成器:
g = (x*x for x in range(10))for i in g: PRint i函數方法實現稍復雜的生成器:
def fib(max): n,a,b=0,1,1 while n<max: yield b a,b=b,a+b n +=1for n in fib(6): print n在循環過程中不斷調用yield,就會不斷中斷,通?;静挥胣ext()來調用,而是直接使用for循環。
迭代器是一個next()方法的對象,而不是通過索引來計數。 創建迭代器:對一個對象調用iter()函數就可以得到它的迭代器,它的語法如下:
iter(obj) iter(func,sentinel)
字典的迭代器會遍歷它的鍵(key),一種比較簡潔的方法如下:
legends = {'A':1,'B':2,'C':3}for i in legends: print i print legends[i]文件對象生成的迭代器會自動調用readline()方法,一種簡潔的實現方法如下:
myFile = open('a.txt')for eachLine in myFile: print eachLine基本概念:在函數調用前后自動打印日志,又不改變原函數,在代碼運行期間動態增加功能的方式稱之為“裝飾器”。
裝飾器的語法已@開頭,接下來是裝飾器函數的名字和可選的參數,緊跟著裝飾器聲明的是被修飾的函數和裝飾函數的可選參數。
decorator(dec_opt_args) def func2Bdecorated(func_opt_args):
比較常用的地方: 1、引入日志 2、增加計時邏輯來檢測性能 3、給函數加入事務的能力
def log(func): def wrapper(*args, **kw): print 'call %s():' % func.__name__ return func(*args, **kw) return wrapper@logdef now(): print '2013-12-25'新聞熱點
疑難解答