python中 wraps 的作用

2022-04-05 01:28:21 字數 1146 閱讀 8977

這裡使用兩段**比較加入wraps裝飾器後,函式列印的結果對比:

新建檔名:testword

**1:不加wraps裝飾器

# coding=utf-8

from functools import wraps

def my_decorator(func):

'''decorator'''

print('decorated function...')

return func(*args, **kwargs)

@my_decorator

def test():

"""testword"""

print('test function')

print(test.__name__, test.__doc__)

列印結果:

[finished in 0.1s]

from functools import wraps   

def my_decorator(func):

@wraps(func)

'''decorator'''

print('decorated function...')

return func(*args, **kwargs)

@my_decorator

def test():

"""testword"""

print('test function')

print(test.__name__, test.__doc__)

列印結果:

test testword

[finished in 0.1s]

總結:因為當使用裝飾器裝飾乙個函式時,函式本身就已經是乙個新的函式;即函式名稱或屬性產生了變化。所以在python的functools模組中提供了 wraps 裝飾函式來 確保原函式在使用裝飾器時不改變自身的函式名及應有屬性。

所以在裝飾器的編寫中建議加入wraps確保被裝飾的函式不會因裝飾器帶來異常情況。

python中 wraps 的作用

這裡使用兩段 比較加入wraps裝飾器後,函式列印的結果對比 新建檔名 testword 1 不加wraps裝飾器 coding utf 8 from functools import wraps def my decorator func decorator print decorated fun...

Python裝飾器中 wraps作用

裝飾器的作用 在不改變原有功能 的基礎上,新增額外的功能,如使用者驗證等。wraps view func 的作用 不改變使用裝飾器原有函式的結構 如name,doc 不使用 wraps裝飾器時候,看看 name doc 輸出的內容是什麼def decorator func this is decor...

Python裝飾器中的 wraps的作用和使用

建立驗證使用者登陸功能裝飾器 from functools import wraps def user login confirm view func wraps view func 驗證使用者是否登陸 從session中獲取user id user id session.get user id u...