透過裝飾器列印最大值與根據傳入引數進行列印次數

jhchena發表於2024-07-24
點選檢視程式碼
# 寫一個帶引數的裝飾器,實現:引數是多少,被裝飾的函式就要執行多少次,把每次結果新增到列表中,最終返回列表。
def xxx(counter):
    print('x函式')
    def wrapper(func):
        print('wrapper函式')
        def inner(*args,**kwargs):
            v = []
            for i in range(counter):
                data = func(*args,**kwargs) # 執行原函式並獲取返回值
                v.append(data)
            return v
        return inner
    return wrapper

@xxx(5)
def index():
    return 8

v = index()
print(v)

# 寫一個帶引數的裝飾器,實現:引數是多少,被裝飾的函式就要執行多少次,並返回最後一次執行的結果【面試題】
def xxx(counter):
    print('x函式')
    def wrapper(func):
        print('wrapper函式')
        def inner(*args,**kwargs):
            for i in range(counter):
                data = func(*args,**kwargs) # 執行原函式並獲取返回值
            return data
        return inner
    return wrapper

@xxx(5)   #xxx先自執行,返回wrapper  等價於: @wrapper,此時內部在執行一次:wrapper 返回inner,
#此時 inner = Index函式, 當作引數進行傳遞
def index():
    return 8

v = index()
print(v)
# 寫一個帶引數的裝飾器,實現:引數是多少,被裝飾的函式就要執行多少次,並返回執行結果中最大的值。 面試題
def xxx(counter):
    print('x函式')
    def wrapper(func):
        print('wrapper函式')
        def inner(*args,**kwargs):
            value = 0
            for i in range(counter):
                data = func(*args,**kwargs) # 執行原函式並獲取返回值
                if data > value:
                    value = data 
            return value
        return inner
    return wrapper

相關文章