partial()函數(shù)怎么在python中應用-創(chuàng)新互聯(lián)

partial()函數(shù)怎么在python中應用?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比河口網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式河口網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋河口地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

在functools模塊中有一個工具partial(),可以用來"凍結(jié)"一個函數(shù)的參數(shù),并返回"凍結(jié)"參數(shù)后的新函數(shù)。

很簡單的解釋,也是官方手冊給的示例。對于int()函數(shù),它可以將給定的數(shù)值轉(zhuǎn)換成十進制整數(shù),轉(zhuǎn)換時可以指定以幾進制的方式解析給定的數(shù)。例如:

# 以10進制解析123,并轉(zhuǎn)換成10進制整數(shù)
>>> int("123")
123

# 以2進制解析10101,并轉(zhuǎn)換成10進制整數(shù)
>>> int("10101", base=2)
21

# 以13進制解析"abc12c",并轉(zhuǎn)換成10進制整數(shù)
>>> int("abc12c", base=13)
4053672

現(xiàn)在不想這樣指定base=2參數(shù)來將二進制轉(zhuǎn)換為10進制整數(shù)了,而是像普通函數(shù)一樣,直接指定待轉(zhuǎn)換的值即可。于是,定義另外一個函數(shù)來封裝int(),例如:

def inttwo(x):
 return int(x, base=2)

inttwo("10101")

functools中提供的partial()就是做類似事情的:

inttwo = partial(int, base=2)

它表示int()中指定參數(shù)base=2,也就是"凍結(jié)"了這個參數(shù)。

>>> from functools import partial
>>> inttwo = partial(int,base=2)
>>> inttwo("10101")
21

之所以"凍結(jié)"加上了引號,是因為可以在inttwo()中再次指定參數(shù)來覆蓋partial()中"凍結(jié)"的參數(shù):

>>> inttwo("10101",base=10)
10101

回頭再看partial()的定義:

functools.partial(func, *args, **keywords)

從它的定義不難知道,不僅僅是像int()中base這樣的kw參數(shù)格式,位置參數(shù)args也一樣能"凍結(jié)"。

partial()返回的其實是一個partial對象,這個對象包含了3個特殊的屬性:

>>> dir(inttwo)
[...... 'args', 'func', 'keywords']
  • func表示該對象所封裝的原始函數(shù)

  • args表示"凍結(jié)"的位置參數(shù)列表

  • keywords表示"凍結(jié)"的關(guān)鍵字參數(shù)

>>> inttwo.func
<class 'int'>
>>> inttwo.args
()
>>> inttwo.keywords
{'base': 2}

另外需要注意的是,partial()不會保留封裝函數(shù)的元數(shù)據(jù),比如注釋文檔、注解等。

>>> def myfunc(x:int, y:int) -> int:
...  ''' sum x + y '''
...  return x + y


# 函數(shù)元數(shù)據(jù)信息
>>> myfunc.__doc__
' sum x + y '
>>> myfunc.__annotations__
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}

# partial()包裝后的函數(shù),沒有函數(shù)元數(shù)據(jù)
>>> newfunc = functools.partial(myfunc,y=3)

所以如果需要這些元數(shù)據(jù),必須自己手動將元數(shù)據(jù)賦值給partial對象:

>>> newfunc.__doc__ = myfunc.__doc__
>>> newfunc.__annotations__ = myfunc.__annotations__
>>> newfunc.__doc__
' sum x + y '
>>> newfunc.__annotations__
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}

最后,除了partial()可以將函數(shù)的參數(shù)"凍結(jié)",functools還提供了partialmethod()將方法的參數(shù)"凍結(jié)",但基本上用不上,就連partial()也很少用。

看完上述內(nèi)容,你們掌握partial()函數(shù)怎么在python中應用的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁題目:partial()函數(shù)怎么在python中應用-創(chuàng)新互聯(lián)
路徑分享:http://muchs.cn/article32/coecsc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化Google、網(wǎng)站設計、關(guān)鍵詞優(yōu)化網(wǎng)站建設、網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司