1.疊加裝飾器的裝飾順序與執行順序html
裝飾順序,由下而上python
執行順序,由下而上app
2.什麼是無參裝飾器與有參裝飾器函數
無參裝飾器是沒有傳入參數的裝飾器優化
有參裝飾器是傳入了參數的裝飾器,實現用戶權限區分code
3.簡述可迭代對象,迭代器對象及迭代取值方式,及for循環內部原理htm
內置含--iter--的方法都是可迭代對象對象
迭代器對象內置含有--iter--和--next--的就是迭代器對象,能夠不依賴索引取值而取出容器內的元素,取出的值是經過不斷的迭代取出(迭代取出字典時,字典本是無序的,迭代取出那一瞬間python解釋器作了優化,變成有序);blog
for循環又稱迭代循環,in後面能夠跟任意可迭代對象,在循環時,會調用可迭代對象goods內置的--iter--方法拿到一個迭代對象,而後再調用該迭代器對象的next方法將取到的值賦給item,執行循環體完成一次循環,周而復始,知道捕捉到stoplteration異常,結束迭代。索引
4.迭代器對象的優缺點是什麼?
迭代器對象優勢:迭代器對象表示的是一種數據流,調用next取值,內存一次只存放一個值。而其餘循環內存的值會不斷變多,致使內存不夠用問題。
迭代器對象缺點:一次只取一個值而且停留,只能日後取值,直到取盡,要想調用前面的值,只能重新調用iter或重新建立一個迭代對象,當兩個循環同時使用一個迭代器時,只有一個能調用成功。
5.寫出一下func執行的結果
def say_hi(func): def wrapper(*args, **kwargs): print("HI") ret = func(*args, **kwargs) print("BYE") return re return wrapper def say_yo(func): def wrapper(*args, **kwargs): print("YO") return func(*args, **kwargs) return wrapper @say_hi @say_yo def func(): print("Tank & Jason") func() ##執行結果:hi, yo, tank&jason, bye;
6.請實現一個裝飾器,限制該函數被調用的頻率,如10秒一次
import time def say_hi(func): def wrapper(*args,**kwargs): print('嗨!') res = func(*args, **kwargs) print('蒼老師:こんにちは/ko n ni chi ha;' 'はじめまして/ha ji me ma shi te;' 'よろしくおねがいします/yo ro shi ku o ne ga i shi ma su;') return res return wrapper def say_ya(func): def wrapper(*args,**kwargs): print('哇!') res = func(*args, **kwargs) return res return wrapper def time_recode(func): def wrapper(*args,**kwargs): print('請等10秒.....') time.sleep(1) print('1.') time.sleep(1) print('2..') time.sleep(1) print('3...') time.sleep(1) print('4....') time.sleep(1) print('5....') time.sleep(1) print('6.....') time.sleep(1) print('7.......') time.sleep(1) print('8........') time.sleep(1) print('9.........') time.sleep(1) print('10.........') res = func(*args,**kwargs) return res return wrapper @say_hi @time_recode @say_ya def func(): print('蒼老師,初次見面,請多關照') func()
7.ATM + 購物車 https://www.cnblogs.com/xiaoyuanqujing/articles/11640785.html