簡單易懂的python裝飾器

2021-10-04 04:12:07 字數 516 閱讀 9068

利用高階函式和閉包,實現不改變已實現的功能和呼叫方式的情況下增加功能

def log(func):

def inner(*args, **kw):

print('call %s():' % func.__name__)

return func(*args, **kw)

return inner

@log

def now():

print('2015-3-25')

>>> now()

call now():

2015-3-25

把@log放到now()函式的定義處,相當於執行了語句:

now = log(now)
呼叫now(),實際上是log(now)()

log(now)返回的是乙個函式,在後面加(),是呼叫了log中的inner()

python簡單裝飾器 python裝飾器簡單使用

理解裝飾前先理解python閉包的概念 下面是對裝飾器的簡單舉例 實質 是乙個函式 引數 是你要裝飾的函式名 並非函式呼叫 返回 是裝飾完的函式名 inner 作用 為已經存在的物件新增額外的功能 特點 不需要對物件做任何的 上的變動 被裝飾的函式無引數 def decorate func 裝飾器列...

通俗易懂的理解 python 裝飾器

舉例def play print 小王在玩遊戲 sleep 3 print 遊戲結束 我想計算play花費的時間 def play start time.time print 小王在玩遊戲 sleep 3 print 遊戲結束 end time.time print 用時 format end st...

python 簡單的裝飾器

今天我們講一講python中的裝飾器。可能初次接觸裝飾器的同學會覺得它很難,其實也就那麼一回事兒,今天就讓我們會會它!首先它的本質是函式,它的功能是為其他函式新增附加功能。ps 它有兩個原則 1.不能修改被修飾的函式的 2.不能更改被修飾函式的呼叫函式。我所認為的裝飾器其實就是 裝飾器 高階函式 函...