裝飾器+迭代器做業

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

相關文章
相關標籤/搜索