Python之裝飾器筆記

2022-09-03 18:45:09 字數 2526 閱讀 3029

概述:

用於管理和增強函式和類行為的**

提供一種在函式或類定義中插入自動執行**的機制

特點  更明確的語法、更高的**可維護性、更好的一致性

編寫函式基礎: 將函式賦給變數、將函式作為引數傳遞、函式巢狀及跨域訪問

函式定義裝飾器 通用性更好

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.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...