python裝飾器理解 python裝飾器理解

2021-10-11 05:40:04 字數 1163 閱讀 7997

裝飾器:

在不改變原函式的**和呼叫方法的基礎上,給原函式增加額外的功能

理解宣告:為了方便理解,以下例子採用最簡潔的函式和新增的功能(給原函式新增乙個執行時間)

import time

def timer(func):

def inner():

func()

return inner

@timer # func = timer(func)

def func():

print('in the func')

func()

以上便實現了乙個簡單的裝飾器

帶引數的裝飾器

flag = true #設定乙個簡單的開關來更改之前的裝飾器使用

def outer(flag):

def timer(func):

def inner(*args, **kwargs):

ret = func(*args, **kwargs)

if flag:

print(time.time())

return ret

return inner

return timer

@outer(flag) # outer(flag) = timer -> @timer

def func1():

print('func1')

func1()

flag = false

func1()

多個裝飾器裝飾乙個函式

def inner(*args,**kwargs):

print('warpper1 前')

ret = func(*args, **kwargs)

return ret

return inner

def inner(*args,**kwargs):

print('warpper2 前')

ret = func(*args, **kwargs)

return ret

return inner

def func1():

print('func1')

func1()

他們之間的關係:(同一種顏色表示他們本身等價)

執行結果:

直譯器在解釋的時候先裝飾靠近函式的裝飾器

結構圖:

python裝飾器 理解Python裝飾器

在python中,對於乙個函式,若想在其執行前後做點什麼,那麼裝飾器是再好不過的選擇,話不多說,上 usr bin env coding utf 8 script 01.py author howie from functools import wraps def decorator func wr...

python裝飾器理解 python裝飾器的理解

python裝飾器應該算是面試常考到的用點,之前在flask的應用中也是會常常用到,抽空仔細看書查資料理解了下裝飾器的概念,通過自己的理解記憶,應該對這個概念會有乙個大致上具體的了解。閉包說起python裝飾器,我們應該不得不談談閉包的概念。我對閉包的理解是,當函式存在巢狀,子函式呼叫了父函式的變數...

python裝飾器理解

裝飾器,網上有很多文章,描述裝飾器,看了總是半知半解,現在是終於明白裝飾器的用法了 deco arg def func argc,argv pass 等同於 equal 說明 後面的func是指原定義的func,前面的func是指使用裝飾器 裝飾 後,我們再去使用的func定義,有點拗口 func ...