最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?調(diào)用函數(shù)時(shí)檢查參數(shù)的類型是否合規(guī)的實(shí)現(xiàn)代碼

 更新時(shí)間:2024年06月21日 12:10:59   作者:是大嘟嘟呀  
這篇文章主要介紹了Python?調(diào)用函數(shù)時(shí)檢查參數(shù)的類型是否合規(guī)的實(shí)現(xiàn)代碼,本文給大家講解的非常詳細(xì),需要的朋友可以參考下

前言 

閱讀本文大概需要3分鐘

說明

在python中,即使加入了類型注解,使用注解之外的類型也是不報(bào)錯(cuò)

def test(uid: int):
	print(uid)
test("999")
  • 但是我就想要類型不對(duì)就直接報(bào)錯(cuò)
  • 確實(shí)可以另辟蹊徑,實(shí)現(xiàn)報(bào)錯(cuò),似乎有強(qiáng)類型語言那味了
  • 只想淡淡的說一句裝飾器yyds

代碼實(shí)現(xiàn)

import inspect
def type_check(func):
    def wrapper(*args, **kwargs):
        sig = inspect.signature(func)
        bound_args = sig.bind(*args, **kwargs)
        bound_args.apply_defaults()
        for name, value in bound_args.arguments.items():
            param = sig.parameters[name]
            expected = param.annotation
            default_value = param.default
            if default_value != inspect.Parameter.empty:
                print('有默認(rèn)值 => {}實(shí)際值={}'.format(name, value))
            else:
                print('無默認(rèn)值 => {}'.format(name))
            # 有注解的參數(shù)
            if expected != inspect.Parameter.empty:
                # 無默認(rèn)值的參數(shù)
                if default_value == inspect.Parameter.empty:
                    if not isinstance(value, expected):
                        raise TypeError(f"參數(shù)'{name}'應(yīng)該是{expected}而不是{type(value)}")
                # 有默認(rèn)值的參數(shù)(值必須是注解類型或者等于默認(rèn)值)
                if value != default_value and not isinstance(value, expected):
                    raise TypeError(f"參數(shù)'{name}'應(yīng)該是{expected}而不是{type(value)}")
        return func(*args, **kwargs)
    return wrapper

開始表演

@type_check
def demo(n: int, msg: str, state: int = None):
    print('正常結(jié)束\n')
# 正常調(diào)用
demo(1, 'SUCCESS')
# 正常調(diào)用
demo(2, 'SUCCESS', 200)
# 引發(fā)異常(第3個(gè)參數(shù)只能是int類型)
demo(3, 'FAILED', '哈哈')  
# 引發(fā)異常(第1個(gè)參數(shù)只能是int類型)
demo('4', "FAILED", '嘻嘻')  

輸出結(jié)果

到此這篇關(guān)于Python 調(diào)用函數(shù)時(shí)檢查參數(shù)的類型是否合規(guī)的文章就介紹到這了,更多相關(guān)Python 檢查參數(shù)的類型是否合規(guī)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Django顯示時(shí)間你應(yīng)該知道的一些問題

    關(guān)于Django顯示時(shí)間你應(yīng)該知道的一些問題

    將Django項(xiàng)目部署到Linux系統(tǒng)上進(jìn)行測(cè)試時(shí),發(fā)現(xiàn)操作記錄的時(shí)間與服務(wù)器的時(shí)間不一致,相差13個(gè)小時(shí)。這主要是因?yàn)闀r(shí)區(qū)的問題,下面這篇文章主要總結(jié)介紹了關(guān)于Django顯示時(shí)間你應(yīng)該知道的一些問題,需要的朋友可以參考下。
    2017-12-12
  • python基礎(chǔ)之并發(fā)編程(一)

    python基礎(chǔ)之并發(fā)編程(一)

    這篇文章主要介紹了詳解python的并發(fā)編程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)之re庫(kù)的詳細(xì)介紹

    python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)之re庫(kù)的詳細(xì)介紹

    Python的re庫(kù)是用于處理正則表達(dá)式的標(biāo)準(zhǔn)庫(kù),正則表達(dá)式是一種強(qiáng)大而靈活的文本處理工具,能夠幫助你執(zhí)行復(fù)雜的字符串匹配和替換操作,這篇文章主要介紹了python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)之re庫(kù)的詳細(xì)介紹,需要的朋友可以參考下
    2025-06-06
  • Python基于遞歸算法求最小公倍數(shù)和最大公約數(shù)示例

    Python基于遞歸算法求最小公倍數(shù)和最大公約數(shù)示例

    這篇文章主要介紹了Python基于遞歸算法求最小公倍數(shù)和最大公約數(shù),結(jié)合實(shí)例形式分析了Python使用遞歸算法進(jìn)行數(shù)值計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • python之消除前綴重命名的方法

    python之消除前綴重命名的方法

    今天小編就為大家分享一篇python之消除前綴重命名的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 詳解在Python中處理異常的教程

    詳解在Python中處理異常的教程

    這篇文章主要介紹了詳解在Python中處理異常的教程,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python3多模式匹配問題的實(shí)現(xiàn)

    Python3多模式匹配問題的實(shí)現(xiàn)

    Aho-Corasick是一種高效的多模式字符串匹配算法,適用于敏感詞檢測(cè)、文本過濾等,本文就來介紹一下Python3多模式匹配,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例

    Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例

    這篇文章主要為大家介紹了Python PIL庫(kù)Image函數(shù)的基本圖像處理操作實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 如何將Python編譯成C語言

    如何將Python編譯成C語言

    這篇文章主要介紹了如何將Python編譯成C語言,我們都知道python比c慢,下面小編就來個(gè)大家分享如何將Python編譯成C語言,需要的小伙伴可以參考一下
    2022-01-01
  • pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例

    pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例

    今天小編就為大家分享一篇pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評(píng)論

宜昌市| 民乐县| 雅安市| 宁海县| 宜宾县| 炉霍县| 清原| 交口县| 宁波市| 山东| 贺兰县| 类乌齐县| 弋阳县| 鄄城县| 宁河县| 阳原县| 商河县| 云浮市| 濮阳县| 梁河县| 长乐市| 西林县| 和田县| 兖州市| 六安市| 花莲市| 大余县| 磐石市| 贵溪市| 寻乌县| 连江县| 五大连池市| 双牌县| 淮阳县| 兰考县| 调兵山市| 彩票| 钦州市| 玛多县| 西青区| 阜阳市|