探秘python functools.partial對象:如何查看其內(nèi)部原始函數(shù)?
在Python中,使用functools.partial創(chuàng)建部分應(yīng)用函數(shù)后,我們常常想知道它內(nèi)部究竟保存了什么信息,特別是原始函數(shù)。本文將詳細(xì)講解如何查看functools.partial對象內(nèi)部的原始函數(shù)。
我們先來看一個(gè)例子,通過functools.partial將multiply函數(shù)的部分參數(shù)固定,生成一個(gè)新的可調(diào)用對象partial_function。雖然type(partial_function)能確認(rèn)其類型為functools.partial,但并不能直接顯示其原始函數(shù)。
那么,如何查看partial_function的原始函數(shù)呢?答案是訪問其func屬性。
立即學(xué)習(xí)“Python免費(fèi)學(xué)習(xí)筆記(深入)”;
functools.partial對象具有三個(gè)只讀屬性:func、args和keywords。其中,func屬性存儲了被修飾的原始可調(diào)用對象(函數(shù)或其他可調(diào)用對象);args屬性存儲預(yù)設(shè)的位置參數(shù);keywords屬性存儲預(yù)設(shè)的關(guān)鍵字參數(shù)。
因此,要查看partial_function的原始函數(shù),只需訪問partial_function.func即可。這將直接返回原始的multiply函數(shù)。
以下代碼示例:
import functools def multiply(x, y): return x * y partial_function = functools.partial(multiply, y=2) print(partial_function.func) # 輸出:<function multiply at 0x...> (地址會因運(yùn)行環(huán)境而異)
print(partial_function.func)將打印multiply函數(shù)的引用,清晰地顯示了partial_function所修飾的函數(shù),從而讓我們了解functools.partial對象內(nèi)部結(jié)構(gòu)以及其封裝的原始函數(shù)。