欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂Python培訓簡述Python中partial()基礎用法說明

2019-07-24 11:09:37 3619瀏覽

本篇文章扣丁學堂Python培訓小編給讀者們分享一下Python中partial()基礎用法的相關資料,文中通過示例代碼給大家做了詳細的介紹,希望對大家學習或者使用python具有一定的參考學習價值,下面就隨小編來了解一下吧。


扣丁學堂Python培訓簡述Python中partial()基礎用法說明


一個函數(shù)可以有多個參數(shù),而在有的情況下有的參數(shù)先得到,有的參數(shù)需要在后面的情景中才能知道,python 給我們提供了partial函數(shù)用于攜帶部分參數(shù)生成一個新函數(shù)。


在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é)"的關鍵字參數(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()也很少用。


想要了解更多關于Python和人工智能方面內(nèi)容的小伙伴,請關注扣丁學堂Python培訓官網(wǎng)、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的Python開發(fā)環(huán)境搭建視頻,Python培訓后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂Python技術交流群:279521237。


扣丁學堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機器學習數(shù)據(jù)分析免費公開課直播間


      【關注微信公眾號獲取更多學習資料】         【掃碼進入Python全棧開發(fā)免費公開課】



查看更多關于"Python開發(fā)資訊"的相關文章>


標簽: Python培訓 Python視頻教程 Python在線視頻 Python學習視頻 Python培訓班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部