1. 程式人生 > >python學習筆記之函數裝飾器

python學習筆記之函數裝飾器

art 就是 函數的調用方式 time() 方式 rap start 修改 args


# def timmer(f): #裝飾器函數
# def inner():
# start = time.time()
# ret = f() #被裝飾的函數
# end = time.time()
# print(end - start)
# return ret
# return inner
#
# @timmer #語法糖 @裝飾器函數名
# def func(): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘)
# return ‘新年好‘
# # func = timmer(func)
# ret = func() #inner()
# print(ret)
# 裝飾器的作用 —— 不想修改函數的調用方式 但是還想在原來的函數前後添加功能
# timmer就是一個裝飾器函數,只是對一個函數 有一些裝飾作用

# 原則: 開放封閉原則
# 開放 : 對擴展是開放的
# 封閉 : 對修改是封閉的

# 封版

# def outer():
# def inner():
# return ‘inner‘
# inner()
#
# outer()

#裝飾帶參數函數的裝飾器
# def timmer(f): #裝飾器函數
# def inner(*args,**kwargs):
# #(1,2) /(1)
# start = time.time()
# ret = f(*args,**kwargs) #f(1,2) #被裝飾的函數
# end = time.time()
# print(end - start)
# return ret
# return inner
#
# @timmer #語法糖 @裝飾器函數名
# def func(a,b): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a,b)
# return ‘新年好‘
#
# @timmer #語法糖 @裝飾器函數名
# def func1(a): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a)
# return ‘新年好‘
# # func = timmer(func)
# ret = func(1,2) #inner()
# ret = func(1,b = 2) #inner()
# print(ret)

# def wrapper(f): #裝飾器函數,f是被裝飾的函數
# def inner(*args,**kwargs):
# ‘‘‘在被裝飾函數之前要做的事‘‘‘
# ret = f(*args,**kwargs) #被裝飾的函數
# ‘‘‘在被裝飾函數之後要做的事‘‘‘
# return ret
# return inner
#
# @wrapper #語法糖 @裝飾器函數名
# def func(a,b): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a,b)
# return ‘新年好‘

# def wrapper():
# def inner():
# pass
# return inner

def wrapper(func): #qqxing
def inner(*args,**kwargs):
ret = func(*args,**kwargs) #被裝飾的函數
return ret
return inner

@wrapper #qqxing = wrapper(qqxing)
def qqxing():
print(123)

ret = qqxing() #inner

python學習筆記之函數裝飾器