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

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

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

前言 

閱讀本文大概需要3分鐘

說明

在python中,即使加入了類型注解,使用注解之外的類型也是不報錯

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

代碼實現(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('有默認值 => {}實際值={}'.format(name, value))
            else:
                print('無默認值 => {}'.format(name))
            # 有注解的參數(shù)
            if expected != inspect.Parameter.empty:
                # 無默認值的參數(shù)
                if default_value == inspect.Parameter.empty:
                    if not isinstance(value, expected):
                        raise TypeError(f"參數(shù)'{name}'應(yīng)該是{expected}而不是{type(value)}")
                # 有默認值的參數(shù)(值必須是注解類型或者等于默認值)
                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個參數(shù)只能是int類型)
demo(3, 'FAILED', '哈哈')  
# 引發(fā)異常(第1個參數(shù)只能是int類型)
demo('4', "FAILED", '嘻嘻')  

輸出結(jié)果

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    如何將Python編譯成C語言

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

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

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

最新評論

长沙县| 藁城市| 灌南县| 武隆县| 武鸣县| 阜南县| 霍山县| 高青县| 安仁县| 惠水县| 武汉市| 武陟县| 长沙县| 桦甸市| 多伦县| 翁牛特旗| 揭东县| 那曲县| 防城港市| 张掖市| 丽江市| 荥阳市| 浦北县| 滦平县| 阿坝县| 泗洪县| 微博| 苍梧县| 竹山县| 化德县| 毕节市| 漠河县| 历史| 栾川县| 昌吉市| 雷山县| 乌审旗| 广丰县| 梓潼县| 图片| 邹平县|