日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python加载函数包_Python wrapt包_程序模块 - PyPI - Python中文网

發布時間:2024/9/15 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python加载函数包_Python wrapt包_程序模块 - PyPI - Python中文网 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速啟動

要實現decorator,首先需要定義一個包裝函數。

每次調用修飾函數時都會調用此函數。包裝紙

函數需要四個位置參數:wrapped-包裝函數,包裝函數依次需要調用它。

instance-調用包裝函數時綁定到的對象。

args-調用修飾函數時提供的位置參數列表。

kwargs-調用修飾函數時提供的關鍵字參數字典。

包裝器函數可以做它需要做的任何事情,但是通常

調用通過^{tt2}傳入的包裝函數$

爭論。

然后需要將decorator@wrapt.decorator應用于包裝器

函數將其轉換為decorator,而decorator又可以應用于

其他功能。import wrapt

@wrapt.decorator

def pass_through(wrapped, instance, args, kwargs):

return wrapped(*args, **kwargs)

@pass_through

def function():

pass

如果希望實現接受參數的decorator,請將

函數閉包中裝飾器的定義。提供的任何參數

當decorator被應用時,將可用于

調用包裝函數時的內部包裝。import wrapt

def with_arguments(myarg1, myarg2):

@wrapt.decorator

def wrapper(wrapped, instance, args, kwargs):

return wrapped(*args, **kwargs)

return wrapper

@with_arguments(1, 2)

def function():

pass

當應用于普通函數或靜態方法時,包裝器函數

調用時將傳遞None作為instance參數。

當應用于實例方法時,調用的包裝函數將

將調用方法的類的實例作為

instance參數。即使實例方法

通過類顯式調用,實例作為第一個

爭論。也就是說,實例永遠不會作為args的一部分傳遞。

當應用于類方法時,調用的包裝函數將

傳遞類類型作為instance參數。

當應用于類時,將傳遞調用時的包裝函數

None作為instance參數。這里的wrapped參數

凱斯將是全班同學。

上面的規則可以用下面的例子來總結。import inspect

@wrapt.decorator

def universal(wrapped, instance, args, kwargs):

if instance is None:

if inspect.isclass(wrapped):

# Decorator was applied to a class.

return wrapped(*args, **kwargs)

else:

# Decorator was applied to a function or staticmethod.

return wrapped(*args, **kwargs)

else:

if inspect.isclass(instance):

# Decorator was applied to a classmethod.

return wrapped(*args, **kwargs)

else:

# Decorator was applied to an instancemethod.

return wrapped(*args, **kwargs)

因此,使用這些檢查可以創建一個通用的decorator

這可以應用于所有情況。不再需要創建

普通函數和實例方法的decorator的不同變體,

或者使用其他包裝器將函數裝飾器轉換為

將適用于實例方法。

在所有情況下,傳遞給包裝函數的包裝函數都被調用

以同樣的方式,傳遞args和kwargs。這個

instance參數不需要用于調用包裝的

功能。

總結

以上是生活随笔為你收集整理的python加载函数包_Python wrapt包_程序模块 - PyPI - Python中文网的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。