python裝飾器了解

2021-07-10 17:37:26 字數 1138 閱讀 1001

功能: 在不修改原始碼和原有呼叫方式的情況下給函式新增額外功能;

又成為語法糖, 包裝函式; 如要在函式的前面, 後面新增新的功能, 或更改函式的功能;

如下面的例子, 有個talk, 列印名字, 現在想要包裝下,讓列印時說的是」name love you」, 又不想直接懂函式talk, 就加上decorator

def

love

(func):

defnewtalk

(word):

return func(word) + "love you"

return newtalk

@love

deftalk

(name):

print(name)

return name

love函式的引數是@love下面的函式物件, 就相當於 lova = newtalk, 即執行的是新定義的函式;原函式的引數是寫到新函式newtalk裡面;

裝飾器傳引數

如果要在原函式的執行前後座一些事, 可以往裝飾器上傳引數, 引數分別為執行前後函式; 但能用到的引數仍然為原函式引數

def love(func_before, func_after):

def outer(talk):

def wraper(name):

func_before(name)

talk(name)

func_after(name)

return warper

return outer

#no used

def newtalk(word):

return func(word) + "love you"

return newtalk

# 使用裝飾器

@love(func_before, func_after)

def talk(name):

print(name)

return name

如何真正的了解python裝飾器

合理使用裝飾器可以簡化開發,並且使得 更加清晰。下面我們分別介紹兩種裝飾器,不帶引數的裝飾器和帶引數的裝飾器。一 不帶引數的裝飾器 我們用乙個實際的例子來引入裝飾器的概念,比如我們現在有乙個方法a 然後我們需要在方法a 執行之前在終端列印 function is running 這時候我們可以在方法...

python裝飾器 Python 裝飾器

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

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...