2020 08 21裝飾器學習筆記

2021-10-23 15:02:00 字數 1817 閱讀 1079

1、普通裝飾器:

def

hello

(func)

:def

warpper

(*args,

**kwargs)

:print

(f"當前是在執行"

) func(

*args,

**kwargs)

# 這裡執行要呼叫這個裝飾器的函式

print

(f"執行完畢"

)return warpper # 這裡是hello這個裝飾器返回warpper這個函式

@hello

defdeco()

:print

("是我在呼叫hello裝飾器"

)if __name__ ==

'__main__'

: deco(

)

列印如下:

2、帶引數的裝飾器

logging.basicconfig(

# filename=os.path.join(os.getcwd(), 'all.log'),

level=logging.debug,

format

='%(asctime)s %(filename)s : %(levelname)s %(message)s'

,# 定義輸出log的格式

# filemode='a',

datefmt=

'%y-%m-%d %a %h:%m:%s',)

deflog_level

(level)

:def

deco

(func)

:def

(*args,

**kwargs)

:if level ==

"debug"

: logging.debug(f"當前執行的是: ."

) func(

*args,

**kwargs)

return deco # log_level函式返回deco函式,第二層返回

@log_level(

"debug"

)def

enen()

: lists =[98

,45,69

,74,1

,67] count =

len(lists)

for i in

range(0

, count)

:for j in

range

(i+1

, count)

:if lists[i]

> lists[j]

: lists[i]

, lists[j]

= lists[j]

, lists[i]

print

(lists)

return lists

if __name__ ==

'__main__'

: enen(

)

輸出如下:

個人總結,只要明白了乙個函式用另乙個函式作為引數,同時乙個函式返回另乙個函式的概念,就能大概理解裝飾器是什麼東西了。

裝飾器模式學習筆記

參考鏈結1 參考鏈結2 裝飾器模式 在不改變原類和不生成子類的情況下,動態為物件新增額外的職責。其比繼承更靈活 更具彈性。不改變原類擴充套件功能,符合開閉原則 對修改關閉,對新增開放 不通過子類擴充套件功能,可以讓類設計更靈活。因為繼承實現子類行為,編譯是靜態的 而用組合擴充套件功能,則可以在程式執...

Python 學習筆記 裝飾器

裝飾器也是乙個函式 巢狀 用來裝飾某個函式,來看下面的 import time deftime count func def start time.time func end time.time print this funnction costs end start deftellhi print...

Python學習筆記 裝飾器

裝飾器 概念 是乙個閉包,把乙個函式當做引數返回乙個替代版的函式,本質上就是乙個返回函式的函式 簡單的裝飾器 def func1 print welcome to beijing def outer func def inner print func return inner f是函式func1的加...