python 裝飾器初階

2022-08-11 23:45:21 字數 2111 閱讀 8791

#

裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數

#裝飾器的作用

#原則 :開放封閉原則

#語法糖 :@

#裝飾器的固定模式

import

time

#print(time.time()) # 獲取當前時間

#time.sleep(10) #讓程式在執行到這個位置的時候停一會兒

#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)##

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)##

return '新年好'##

@timmer #語法糖 @裝飾器函式名

#def func1(a): #被裝飾的函式

#time.sleep(0.01)##

return '新年好'

## func = timmer(func)

#ret = func(1,2) #inner()

#ret = func(1,b = 2) #inner()

#print(ret)##

def inner(*args,**kwargs):

#'''在被裝飾函式之前要做的事'''

#ret = f(*args,**kwargs) #被裝飾的函式

#'''在被裝飾函式之後要做的事'''

#return ret

#return inner##

#def func(a,b): #被裝飾的函式

#time.sleep(0.01)##

return '新年好'##

def inner():

#pass

#return inner

qqxing

def inner(*args,**kwargs):

ret = func(*args,**kwargs) #

被裝飾的函式

return

ret

return

inner

#def

qqxing():

print(123)

ret = qqxing() #

inner##

講解元旦作業 擴充套件裝飾器

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...

python裝飾器原理 Python裝飾器原理

裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...