如何寫裝飾器

2022-07-01 17:09:17 字數 1626 閱讀 4852

函式裝飾器,可以在不改變原來的函式的情況下,在原來的函式的前面或者後面新增動作。

do something before

原來的函式動作

do something after

基本流程如下:

1. 首先定義要新增的功能函式

def 裝飾的函式(引數,此引數用來傳入正常函式的函式名)

def wrapthefunction()

do something before

引數()

do something after

retrun wrapthefunc

注意此次 return 的函式名,不帶()

2. def 正常工作的函式()

正常函式的動作

3. 在正常函式之前新增

@ 裝飾的函式

def

a_new_func(func_name)

defwrapthefunc()

print ("

do something before")

func_name()

print("

do something after")

return

wrapthefunc

@a_new_func

defnormal_func():

print("

i am working normal...

")normal_func()

1. 遇到 @ a_new_func,把@下面的函式名(normal_func)作為引數傳入到 a_new_func中去。即 「normal_func」 ----> 「func_name」

2. 把裝飾器中定義的函式名去代替被裝飾函式的函式名。即"wrapthefunc"  ---> "normal_func"

注意:@wraps接受乙個函式來進行裝飾,並加入了複製函式名稱、注釋文件、引數列表等等的功能。這可以讓我們在裝飾器裡面訪問在裝飾之前的函式的屬性。

from functools import

wraps

defdecorator_name(f):

@wraps(f)

def decorated(*args, **kwargs):

ifnot

can_run:

return

"function will not run

"return f(*args, **kwargs)

return

decorated

@decorator_name

deffunc():

return("

function is running")

can_run =true

print

(func())

#output: function is running

can_run =false

print

(func())

#output: function will not run

python函式如何寫 python如何寫函式

python函式的定義 定義函式,也就是建立乙個函式,可以理解為建立乙個具有某些用途的工具。定義函式需要用 def 關鍵字實現,具體的語法格式如下 def 函式名 形參列表 由零條到多條可執行語句組成的 塊 return 返回值 其中,用 括起來的為可選擇部分,即可以使用,也可以省略。此格式中,各部...

python如何寫日誌 python如何寫日誌

這篇文章介紹了 python 的 logging 模組,包括它的設計以及針對更多複雜案例的適用方法。這篇文章不是寫給開發者的文件,它更像是乙個指導手冊,來說明 python 的 logging 模板是如何搭建的,並且激發感興趣的人深入研究。為什麼使用 logging 模組?也許會有開發者會問,為什麼...

如何寫 如何寫好指令碼?

好的指令碼當然要有好的開場白 好的開題 破題 話題引入,好的敘述與分析 好的結束語。好的指令碼還應有好的輔助說明的素材,700 800字的指令碼,對應的素材數量如下 非真人出鏡者 素材數量需要翻倍,最好找到超過20個素材。寫好指令碼還應注意以幾點 一 開門見山 快速切入主題,這樣的話就更容易讓觀眾對...