Python高階 002 裝飾器 1

2022-03-13 10:48:12 字數 1453 閱讀 6266

裝飾器(1)

def

fun(i):

print i

這是乙個簡單的方法,現在我們要在執行這個方法前後在執行一些其他**,比如計算執行時間。

簡單的方式就是:

import

time

deffun(i):

t =time.time()

print

i t = time.time() - t #

計算執行時間

print

'',str(t) #

列印時間

這種方式不方便,也不能復用。

import

time

#計算執行時間

def exec_time(fn, i): #

fn:方法; i:方法的引數

t =time.time()

fn(i)

#呼叫fn

t = time.time() - t #

計算執行時間

print

'',str(t) #

列印時間

deffun(i):

printi#

呼叫exec_time(fun, i)

使用這種方式,在實際呼叫時,需要包裹一層exec_time方法,雖然可以復用,使用起來但也並不靈活。

下面我們就來加入修飾器

from functools import wraps         #

引入裝飾器需要的包

import

time

#定義乙個裝飾器

def exec_time(fn): #

引數fn:要修飾的方法,就是我們的fun

@wraps(fn)

def _(i): #

修飾方法,引數i是fun傳過來的引數

t =time.time()

fn(i)

#執行方法

t = time.time() -t

print''

,str(t)

return _ #

返回修飾後方法

這樣就完成了乙個計算執行時間的裝飾器。

@exec_time

deffun(i):

print

i@exec_time

deffun2(i):

print

'fun2

', i

使用起來十分方便。

本站文章為寶寶巴士 sd.team

) **自【寶寶巴士superdo團隊】

python高階裝飾器 Python裝飾器高階

對帶引數的函式進行裝飾 對帶引數的函式進行裝飾,內嵌包裝函式的形參和返回值與原函式相同,裝飾函式返回內嵌包裝函式物件 def deco func def deco a,b print before myfunc called.ret func a,b print after myfunc calle...

python高階 裝飾器

1.1 裝飾器 裝飾器的作用 在不改變原函式的情況下給函式增加功能 裝飾器由閉包和語法糖組成 1.2 閉包 閉包特點 外部函式巢狀內部函式 內部函式可以訪問並且儲存外部函式的變數 外部函式返回內部函式的引用 有以上三個特點的函式就稱為閉包 閉包的例子 def func1 a def func2 b ...

python高階 裝飾器

1.1 裝飾器 裝飾器的作用 在不改變原函式的情況下給函式增加功能 裝飾器由閉包和語法糖組成 1.2 閉包 閉包特點 外部函式巢狀內部函式 內部函式可以訪問並且儲存外部函式的變數 外部函式返回內部函式的引用 有以上三個特點的函式就稱為閉包 閉包的例子 def func1 a def func2 b ...