簡體   English   中英

如何使用裝飾器將 function 的結果包裝在多個外部庫函數中

[英]How can I use a decorator to wrap the result of my function, inside of a multiple external library functions

我最近才了解裝飾器,盡管閱讀了我能找到的關於這個問題的幾乎所有搜索結果,但我無法弄清楚這一點。 我要做的就是定義一些 function "calc(x,y)",並用一系列外部函數包裝它的結果,而不改變我的 function 內部的任何東西,也不改變它在腳本中的調用,例如:

@tan
@sqrt
def calc(x,y):
    return (x+y)

### calc(x,y) = tan(sqrt(calc(x,y))
### Goal is to have every call of calc in the script automatically nest like that. 

在昨天閱讀了將近 10 個小時的裝飾器后,我得到了強烈的印象,這就是它們的用途。 我確實知道有多種方法可以修改函數相互傳遞的方式,但我找不到任何關於如何實現這一點的明顯指南。 我讀到也許 functools 包裝可以用於此目的,但我也無法弄清楚。

這里的大部分願望是能夠快速輕松地測試不同的函數如何修改其他函數的結果,而不必在括號之間繁瑣地包裝函數......也就是說,為了避免完全弄亂括號,有我的修飾符在自己的行上定義的測試函數。

裝飾器只是一個 function,它接受一個 function 並返回另一個 function。

def tan(f):
    import math
    def g(x,y):
        return math.tan(f(x,y))
    return g

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM