python中如何使用裝飾器

2022-07-06 14:12:11 字數 1003 閱讀 9008

# 1.如果裝飾器是多層的,誰距離函式最近,則優先使用那個裝飾器

# 新增校驗功能的裝飾器

import time

def verify1(t):

def decorate(func):

print('第一層校驗正在進行中...')

time.sleep(t)

print('校驗完畢!')

# 呼叫原函式

func(*args, **kwargs)

return decorate

def verify2(t, name, age):

def decorate(func):

print('第二層校驗正在進行中...', name, age)

time.sleep(t)

print('校驗完畢!')

# 呼叫原函式

func(*args, **kwargs)

return decorate

# 使用裝飾器

@verify1(2)

@verify2(1, '第乙個校驗器', 20)

def f1(name):

print('我的名字叫:', name)

f1('lily')

@verify1(1)

@verify2(1, '第乙個校驗器', 20)

def f2(name, age):

print('我的名字叫:{},今年{}歲'.format(name, age))

f2('lucy', 20)

第一層校驗正在進行中...

校驗完畢!

第二層校驗正在進行中... 第乙個校驗器 20

校驗完畢!

我的名字叫: lily

第一層校驗正在進行中...

校驗完畢!

第二層校驗正在進行中... 第乙個校驗器 20

校驗完畢!

我的名字叫:lucy,今年20歲

Python中如何使用裝飾器

把乙個函式當作引數,返回乙個替代版的函式 本質就是乙個返回函式的函式 在不改變原函式的基礎上,給函式增加功能 函式對修改是封閉的,對擴充套件是開放的 也就是說,是給乙個已經寫好的函式進行修改時,並不改變這個已經寫好的函式,而是再寫乙個函式來進行呼叫這個函式,但是在原本已經呼叫過這個函式的位置不能一一...

python裝飾器 如何使用函式裝飾器

問題舉例 有時候我們想為多個函式統一新增某種功能,比如計時統計 記錄日誌,快取運算結果等 我們並不想在每個函式內一一新增完全相同的 有什麼解決方案嗎?定義裝飾器函式,用它在原函式的基礎上生成乙個新增新功能的函式來代替原函式 def memo func cache def wrap args res ...

如何使用函式裝飾器?

需求 某些時候我們想為多個函式,統一新增某種功能,比如計時統計 日誌記錄 快取運算結果等等 我們不想在每個函式內一一新增完全相同的 有什麼好的解決方案?思路 定義裝飾器函式,用它來生成乙個在原函式基礎上新增了新功能的函式,替代原函式 def memo func cache def wrap args...