對python函數(shù)簽名的方法詳解
函數(shù)簽名對象,表示調(diào)用函數(shù)的方式,即定義了函數(shù)的輸入和輸出。
在Python中,可以使用標(biāo)準(zhǔn)庫inspect的一些方法或類,來操作或創(chuàng)建函數(shù)簽名。
獲取函數(shù)簽名及參數(shù)
使用標(biāo)準(zhǔn)庫的signature方法,獲取函數(shù)簽名對象;通過函數(shù)簽名的parameters屬性,獲取函數(shù)參數(shù)。
# 注意是小寫的signature from inspect import signature def foo(value): return value # 獲取函數(shù)簽名 foo_sig = signature(foo) # 通過函數(shù)簽名的parameters屬性,可以獲取函數(shù)參數(shù) foo_params = foo_sig.parameters
創(chuàng)建函數(shù)簽名
使用類Parameter的實(shí)例創(chuàng)建函數(shù)參數(shù)列表;使用Signature類,接受函數(shù)參數(shù)列表,實(shí)例化出函數(shù)簽名實(shí)例。
# 注意是首字母大寫的Signature from inspect import Signature, Parameter # 創(chuàng)建一個(gè)函數(shù)參數(shù)列表,列表內(nèi)的元素由類Parameter的實(shí)例組成 # Parameter實(shí)例化時(shí),依次接受參數(shù)名、參數(shù)類型、默認(rèn)值和參數(shù)注解 # 默認(rèn)值和參數(shù)類型默認(rèn)為空,這里的空值不是None,而是Parameter.empty,代表沒有值 parms = [Parameter('x', Parameter.POSITIONAL_OR_KEYWORD), Parameter('y', Parameter.POSITIONAL_OR_KEYWORD), Parameter('z', Parameter.KEYWORD_ONLY, default=9)] # 使用Signature類,接受函數(shù)參數(shù)列表,實(shí)例化出函數(shù)簽名實(shí)例 sig = Signature(parms)
檢查函數(shù)參數(shù)是否匹配簽名
使用函數(shù)簽名的bind的方法,檢查函數(shù)參數(shù)是否匹配簽名。
延續(xù)上面的例子,通過函數(shù)簽名的bind方法,接受函數(shù)參數(shù),如果匹配,返回參數(shù)BoundArguments實(shí)例,如果不匹配,則拋出TypeError,并給出詳細(xì)的異常信息。
通過BoundArguments實(shí)例的屬性,可以獲取函數(shù)簽名、參數(shù)的值等內(nèi)容。
bound_args_01 = sig.bind(1, 2, z=3) # <BoundArguments (x=1, y=2, z=3)> bound_args_02 = sig.bind(1, 2) # <BoundArguments (x=1, y=2)> bound_args_03 = sig.bind(1) # TypeError # missing a required argument: 'y'
以上這篇對python函數(shù)簽名的方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用pandas實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行特定排序
在數(shù)據(jù)分析和處理過程中,排序是一項(xiàng)常見而重要的操作,本文將詳細(xì)介紹如何利用pandas對數(shù)據(jù)進(jìn)行特定排序,包括基本排序、多列排序、自定義排序規(guī)則等方面的內(nèi)容,需要的可以了解下2024-03-03python Dejavu庫快速識別音頻指紋實(shí)例探究
這篇文章主要為大家介紹了python Dejavu庫快速識別音頻指紋實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python中矩陣合并、拼接、組合的實(shí)現(xiàn)示例
本文主要介紹了python中矩陣合并、拼接、組合的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07python解析庫Beautiful?Soup安裝的詳細(xì)步驟
Beautiful?Soup是python的一個(gè)庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于python解析庫Beautiful?Soup安裝的詳細(xì)步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04Python數(shù)據(jù)分析基礎(chǔ)之異常值檢測和處理方式
這篇文章主要介紹了Python數(shù)據(jù)分析基礎(chǔ)之異常值檢測和處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07如何用Python實(shí)現(xiàn)簡單的Markdown轉(zhuǎn)換器
這篇文章主要介紹了如何用Python實(shí)現(xiàn)簡單的Markdown轉(zhuǎn)換器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07Python3標(biāo)準(zhǔn)庫之dbm UNIX鍵-值數(shù)據(jù)庫問題
dbm是面向DBM數(shù)據(jù)庫的一個(gè)前端,DBM數(shù)據(jù)庫使用簡單的字符串值作為鍵來訪問包含字符串的記錄。這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫:dbm UNIX鍵-值數(shù)據(jù)庫的相關(guān)知識,需要的朋友可以參考下2020-03-03