4 裝飾器 生成器 迭代器

2022-08-21 06:27:11 字數 811 閱讀 6329

在函式前後做點事情,比如鑑權、記錄日誌

將執行的函式傳入包裝函式,在包裝函式內部使用閉包構造包含傳入函式的新函式,返回新函式,執行的函式指向新函式

函式程式設計的開閉原則:對新增開放,對修改關閉

def wrap1(fun):

def infun(*listargs,**dictargs):

token = dictargs.pop('token')#獲取token,並刪除,等價於先取值,再del dictargs['token']

is_login = false

if not is_login:

return "非法使用者"

print 1

temp = fun(*listargs,**dictargs)

print 2

return temp

return infun

def wrap2(fun):

def infun(*listargs,**dictargs):#動態引數獲取引數

print 3

temp = fun(*listargs,**dictargs)#fun指向傳入的原f1的函式體

print 4

return temp

return infun

@wrap1

@wrap2#先包裝wrap2,再包裝wrap1,等價於f1 = wrap(f1);f1指向新函式

def f1(arg):

print "f1%s" % arg

return ['1.1.1.1']

print f1('haha')

裝飾器,生成器,迭代器

裝飾器 import time def show time func def inner x start time time.time func x end time time.time print end time start time return inner show time def add...

迭代器 生成器 裝飾器

1.迭代器 1 定義 同時滿足 iter 方法和next 方法的物件就是迭代器。3 型別 可迭代物件通過iter 轉為迭代器 生成器是一種特殊的迭代器。2.生成器 1 定義 生成器是迭代器的一種,包括含有yield關鍵字函式和生成器表示式。2 用法 所有函式呼叫的引數都是第一次呼叫時保留的,而不是新...

生成器 迭代器 裝飾器

迭代器表面上看是乙個資料流物件或者容器,當使用其中的資料時,每次從資料流中取出乙個資料,直到資料被取完,而且資料不會被重複使用。從 的角度來看,迭代器是實現了迭代器協議方法的物件和類。迭代器協議方法主要是兩個 iter 該方法返回物件本身,它是for語句使用迭代器的要求 next 方法用於返回容器中...