函式裝飾器 python

2021-10-09 22:42:55 字數 2114 閱讀 5783

# 裝飾器的結構

def decorator()

: def inner()

: pass

return inner

python函式裝飾器

**1:

import time

def cal_time

(fn)

: # 計算**執行時間

# def start():

start_time = time.

time

() # 記錄**開始執行時間戳

return_value1 =fn(

) # 執行目標函式

end_time = time.

time

() # 記錄**結束時間戳

print

('執行時間是'

,round

(end_time - start_time,4)

,'秒'

) # 輸出**執行時間

return return_value1

@cal_time # 函式裝飾器

def test11()

: time.

sleep(1

)print

('sludge'

)return

100test11 +

=1#test11直接變成變數了麼?

print

(test11)

**2:

import time

def cal_time

(fn)

: # 計算**執行時間

def start()

: start_time = time.

time

() # 記錄**開始執行時間戳

return_value1 =fn(

) # 執行目標函式

end_time = time.

time

() # 記錄**結束時間戳

print

('執行時間是'

,round

(end_time - start_time,4)

,'秒'

) # 輸出**執行時間

return return_value1

return start

@cal_time # 函式裝飾器

def test11()

: time.

sleep(1

)print

('sludge'

)return

100x =

test11()

print

(x)

經過函式裝飾器以後,是否函式名直接變成乙個變數名??

import time

def cal_time

(fn)

: # 計算**執行時間

# def start():

start_time = time.

time

() # 記錄**開始執行時間戳

return_value1 =fn(

) # 執行目標函式

end_time = time.

time

() # 記錄**結束時間戳

print

('執行時間是'

,round

(end_time - start_time,4)

,'秒'

) # 輸出**執行時間

return return_value1

# return start

#@cal_time # 函式裝飾器

def test11()

: time.

sleep(3

)print

('sludge'

)return

100# x = test11()

# print(x)

# 執行過函式轉世器,接下來執行的函式會變成乙個變數的麼?

為什麼這裡沒有執行 test11中的 print(『sludge』)呢?

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...