python 裝飾器函式

2021-08-10 13:36:11 字數 1426 閱讀 9483

def timer(func):

def bar():

print('開始計時')

func()

print('結束計時')

return bar

@timer

def test1():

print('1223')

@timer

def test2():

print('saaa')

#timer=timer(test1)

test2();

:函式time

def timer(func):

def bar(x,y):

print('開始計時')

func(x,y)

print('結束計時')

return bar

@timer

def test1(a,b):

print(a+b)

test1(3,5);

不定長引數

def timer(func):

def bar(*x,**y):

print('開始計時')

func(*x,**y)

print('結束計時')

return bar

@timer

def test1(*a,**b):

total=0;

for i in a:

total+=i

print(total)

test1(3,5,6,8)

四、帶引數的裝飾器

顧名思義:裝飾器本質上還是函式,所以他應該也能帶引數

def timer2(types='false'):

def timer(func):

def bar(*x,**y):

print('開始計時')

func(*x,**y)

print('結束計時')

if types == 'true':

print('方法二')

return bar

return timer

@timer2('false')

def test1(*a,**b):

total=0;

for i in a:

total+=i

print(total)

@timer2('true')

def test2(*a,**b):

# total=0;

# for i in a:

# total+=i

print('方式二肯定')

test1(3,5,6,8)

test2(3,5,6,8)

根據改變裝飾傳值來判斷是否執行相應的**

python裝飾器 函式裝飾器,類裝飾器

只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...

python 裝飾器 函式裝飾器 類裝飾器

python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...

python裝飾器 裝飾器工廠函式

使用裝飾器實現如下所示的列印 小白聯盟def printequel func1 def inner1 print 15 func1 return inner1 def printstar func2 def inner2 print 15 func2 return inner2 printequel...