python 裝飾器應用

2021-10-08 03:25:28 字數 2127 閱讀 8662

裝飾器應用:

裝飾器的主要作用是:列印日誌,檢測效能,資料庫事物,url路由

應用1,生成標籤

def

bold

(fn)

:def()

:# 閉包,這個函式的作用就是給原來的函式增加一些功能,

return

""

+ fn()+

""

@bold

deftest()

:return

"python"

in [2]

: test(

)out[2]

:'python'

等價於

def

(test)

:# 引數以後會是乙個函式

return

""

+ test()+

""

# 引數實際上是乙個函式

deftest()

:return

"python"

in [2]

out[2]

:'python'

應用2 日誌函式

in[2]: def log(f):

...: def wr(*args, **kwargs):

...: print(f'call () ')

...: return f(*args, **kwargs)

...: return wr

...: @log

...: def test():

...: pass

...: test()

...:

call test()

應用3 函式效能檢測

in[2]: import time

...: def perf(f):

...: def wr(*args, **kwargs):

...: start = time.time()

...: f(*args, **kwargs)

...: end = time.time()

...: print(f'call () in ')

...: return wr

...:

...: @perf

...: def test(x):

...: time.sleep(2)

...: test(3)

...:

call test() in 2.0124034881591797

應用4 連線資料庫

def link_mysql(fun):

def wr(*args, **kwargs):

with pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=dbname, charset=charset) as cur:

fun(cur, *args, **kwargs)

return wr

@link_mysql

def insert_data(cur, ...):

應用5 url

url_map =

defroute

(option):#

definner

(func,

*args,

**kwargs)

: url_map[option[

'path']]

= func

return inner

#@inner --> inner(index)

@route(

)def

index

(request)

:pass

參考文獻:

python裝飾器 Python 裝飾器

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

python中裝飾器的應用

裝飾器的概念 裝飾器的實現是函式裡面巢狀函式 裝飾器的本質是乙個函式,它可以讓其他函式在不需要做任何 改動的前提下增加額外的功能 裝飾器需要傳遞乙個函式,返回值也是乙個函式物件.裝飾器的應用場景 計時器 記錄日誌 使用者登入驗證 函式引數驗證 如圖所示,函式func1輸出時運用函式outer進行了裝...

PYTHON 裝飾器 的應用原理

今天回顧了一下裝飾器知識,來記錄一下個人的體悟.看了幾個大神的部落格,對裝飾器的解釋如下 假設我們要增強函式的功能,比如,在函式呼叫前後自動列印,但又不希望修改函式的定義,這種在 執行期間動態增加功能的方式,稱之為 裝飾器 decorator 我個人覺得說的太籠統,因為我下面的 完成了上述的要求卻不...