python裝飾器簡單使用

2021-08-03 01:25:50 字數 1157 閱讀 1680

概念:在**執行期間動態增加功能的方式,稱之為「裝飾器」(decorator).本質上,decorator就是乙個返回函式的高階函式

我們要定義乙個能列印日誌的decorator,可以定義如下

def

log(func):

def(*args, **kw):

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

return func(*args, **kw)

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

如果decorator本身需要傳入引數,那就需要編寫乙個返回decorator的高階函式

def

log(text):

defdecorator

(func):

def(*args, **kw):

print('%s %s():' % (text, func.__name__))

return func(*args, **kw)

return decorator

這個3層巢狀的decorator用法如下

@log('execute')

defnow

(): print('2015-3-25')

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

import functools

deflog

(func):

@functools.wraps(func)

def(*args, **kw):

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

return func(*args, **kw)

deflog

(text):

defdecorator

(func):

@functools.wraps(func)

def(*args, **kw):

print('%s %s():' % (text, func.__name__))

return func(*args, **kw)

return decorator

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

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

python 簡單的裝飾器

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

python裝飾器簡單介紹

裝飾器的作用 在函式執行前或執行後執行一段 做一些通用處理 與直接在函式中寫 相比,優點在於可復用 呼叫形式為函式前 名字 dec def f i 裝飾器執行邏輯 系統看到裝飾器,將不呼叫原函式 呼叫裝飾器函式,將原函式作為引數傳入 此函式返回乙個函式,系統執行返回的函式 有意思的地方來了 返回的函...