假設我想定義一個接受函數作爲參數的元函數並返回一個新的修改後的函數。像對函數起作用並返回函數的函數
metaf(f) -> f**2
所以,無論f
會導致,metaf
東西會導致與答案的兩個電源(如果結果不能被提升到2的冪,就這樣吧。引發錯誤)。
目前我發現做到這一點的方式,需要在metaf
定義明確提及的f
的說法,即定義
metaf = lambda f, x : f(x)**2
然後
mynewf = lambda x : metaf(f, x)
這工作,但我想知道它是否適用於輸入參數可能有很多變化的複雜參數函數。
所以我想知道你是否可以建議一種不同的方式,尤其是那種不需要在metaf
定義中指定參數的方法。
編輯:以下兩個答案都很有幫助。僅供參考,在回答問題之後,我也意識到如何使用lambda表達式來定義metaf
。略顯繁瑣,但可能仍然是值得注意的:
metaf = lambda func: lambda *args, **kwargs : func(*args, **kwargs)**2
你想實現一個裝飾器嗎? – cdarke