概述:
用於管理和增強函式和類行為的**
提供一種在函式或類定義中插入自動執行**的機制
特點 更明確的語法、更高的**可維護性、更好的一致性
編寫函式基礎: 將函式賦給變數、將函式作為引數傳遞、函式巢狀及跨域訪問
函式定義裝飾器 通用性更好
1"""函式定義裝飾器
"""2
#通用性更好34
#引數化裝飾器
5def
tags(tag):
6def
tag_decorator(func):78
return f'
<>'9
return
10return
tag_decorator
1112
defp_decorator(func):
1314
return
''+func(*args, **kwargs)+''15
16return
1718
defdiv_decorator(func):
1920
return'{}
'.format(func(*args, **kwargs))
2122
return
2324
class
student:
25def
__init__
(self, name):
26 self.name =name
2728
@p_decorator
29def
get_name(self):
30return
self.name.upper()
3132 @tags('p'
)33#@p_decorator
34def
get_text():
35return
'歡迎學習優品課堂課程'36
37 @tags('
div'
)38 @tags('p'
)39#@div_decorator40#
@p_decorator
41def
get_upper_text(text):
42return
text.upper()
4344
if__name__ == '
__main__':
45print
(get_text())46#
< p > 歡迎學習優品課堂課程 < / p >
47print(get_upper_text('
www.codeclassroom.com'))
48#< div > < p > www.codeclassroom.com < / p > < / div >
49 s = student('
mike')
50print
(s.get_name())51#
< p > mike < / p >
類定義裝飾器
裝飾器引數
1"""類定義裝飾器
"""234
classp:5
def__init__
(self, func):
6 self.func =func78
def__call__(self, *args, **kwargs):
9return
'' + self.func(*args, **kwargs) + ''10
11class
student:
12def
__init__
(self, name):
13 self.name =name14#
@p 會出現錯誤
15def
get_name(self):
16return
self.name.upper()
1718
@p19
defget_text():
20return
'歡迎學習優品課堂課程'21
@p22
defget_upper_text(text):
23return
text.upper()
2425
26if
__name__ == '
__main__':
27print
(get_text())28#
< p > 歡迎學習優品課堂課程 < / p >
29print(get_upper_text('
www.codeclassroom.com'))
30#< p > www.codeclassroom.com < / p >
31 s = student('
john')
32print
(s.get_name())33#
john
Python之裝飾器學習筆記
裝飾器本質上是乙個python函式,其返回值也是乙個函式物件 作用 不修改原函式情況下,為已有函式新增新的功能。如插入日誌 效能測試 事務處理 快取 許可權校驗等場景。閉包函式 在函式內部定義乙個內嵌函式,內嵌函式引用了外部函式的變數,此時內嵌函式稱為閉包函式。閉包函式所引用的外部定義的變數被叫做自...
python學習筆記之裝飾器
def print msg print msg是外函式 msg i m 狂師 defprinter printer是巢狀函式 print msg return printer 返回巢狀函式printerdef func a,b def line n nonlocal a nonlocal用於宣告變數...
python裝飾器介紹 Python之裝飾器簡介
python函式式程式設計之裝飾器 1.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...