點選檢視程式碼
# 寫一個帶引數的裝飾器,實現:引數是多少,被裝飾的函式就要執行多少次,把每次結果新增到列表中,最終返回列表。
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