国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【Python】使用裝飾器為Python實現(xiàn)運行時類型檢查

jonh_felix / 1047人閱讀

摘要:背景閑來無事想熟悉一下的裝飾器寫法,就寫了一個簡單的類型檢查裝飾器。思路利用帶參數(shù)的裝飾器直接傳入變量的預(yù)期類型,然后使用檢查類型。

背景
閑來無事想熟悉一下Python的裝飾器寫法,就寫了一個簡單的類型檢查裝飾器。
思路
利用帶參數(shù)的裝飾器直接傳入變量的預(yù)期類型,然后使用isinstance檢查類型。
代碼
def typeLimits(*types, **typesdict):
    def desc(func):
        def f(*args, **kwargs):
            for i, v in enumerate(types):
                if not isinstance(args[i], v):
                    raise Exception("Need a {} where {} is not.".format(v.__name__, args[i]))
            for parm in typesdict:
                if kwargs.get(parm, None) is None:
                    raise Exception("Need parameter {}.".format(parm))
                if not isinstance(kwargs[parm],typesdict[parm]):
                    raise Exception("Need a {} for {} where {} is not.".format(typesdict[parm].__name__, parm, kwargs[parm]))
            return func(*args, **kwargs)
        return f
    return desc

@typeLimits(int, str)
def printOneIntAndOneString(n, s):
    print(n ** 2, s.upper())

@typeLimits(int, name = str)
def printOneIntAndName(n, name):
    print(n + n, name.upper())

printOneIntAndOneString(1,"abc") # 正確執(zhí)行

# printOneIntAndOneString(1 + 2,3 + 4) 報錯

printOneIntAndName(1, name = "aaa") 正確執(zhí)行

# printOneIntAndName(1) 報錯

# printOneIntAndName(1, name = 2.0) 報錯
感想
這只是一個游戲之作,檢查類型會耗費一些性能,真正部署運行的項目是不需要類型檢查的,但可以在測試的時候使用類型檢查來避免一些無謂的錯誤。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38177.html

相關(guān)文章

  • python_bomb----小白學(xué)裝飾

    什么是裝飾器? 裝飾器就是用來裝飾函數(shù)。 想要增強原有函數(shù)的功能 但不希望修改原有函數(shù)的定義 在代碼運行期間動態(tài)增加功能的方式 函數(shù)嵌套函數(shù) 調(diào)用方式:原函數(shù) = 外層函數(shù)(原函數(shù)名)原函數(shù) def desc(fun): def add_info(): print(happy today) fun() print(westos_linux...

    mikasa 評論0 收藏0
  • Python學(xué)習(xí)之路26-函數(shù)裝飾器和閉包

    摘要:初步認(rèn)識裝飾器函數(shù)裝飾器用于在源代碼中標(biāo)記函數(shù),以某種方式增強函數(shù)的行為。函數(shù)裝飾器在導(dǎo)入模塊時立即執(zhí)行,而被裝飾的函數(shù)只在明確調(diào)用時運行。只有涉及嵌套函數(shù)時才有閉包問題。如果想保留函數(shù)原本的屬性,可以使用標(biāo)準(zhǔn)庫中的裝飾器。 《流暢的Python》筆記本篇將從最簡單的裝飾器開始,逐漸深入到閉包的概念,然后實現(xiàn)參數(shù)化裝飾器,最后介紹標(biāo)準(zhǔn)庫中常用的裝飾器。 1. 初步認(rèn)識裝飾器 函數(shù)裝飾...

    sunny5541 評論0 收藏0
  • python裝飾器入門小結(jié)

    摘要:使用一年多了,一直知道有個裝飾器,很好用,試圖理解過,可能由于資料找的不好,自己的悟性太差,一直沒有搞清楚,今天查了一些資料,算是理解了,現(xiàn)在簡單記錄下。 使用python一年多了,一直知道python有個裝飾器,很好用,試圖理解過,可能由于資料找的不好,自己的悟性太差,一直沒有搞清楚,今天查了一些資料,算是理解了,現(xiàn)在簡單記錄下。python的裝飾器本身的功能是在不改變已有函數(shù)本身的...

    SunZhaopeng 評論0 收藏0
  • Python內(nèi)建函數(shù)大全

    摘要:類是一個在范圍內(nèi)的可變整數(shù)序列。因此,構(gòu)造函數(shù)參數(shù)解釋請參考。如果省略了,它將默認(rèn)為零,并且構(gòu)造函數(shù)用作像和這樣的數(shù)字轉(zhuǎn)換。該函數(shù)刪除指定的屬性只要該對象允許。返回表示當(dāng)前全局符號表的字典。將整數(shù)轉(zhuǎn)換為以為前綴的小寫十六進制字符串。 微信公眾號: Python數(shù)據(jù)科學(xué) 來源:https://juejin.im/post/5ae3ee...翻譯總結(jié)自官方文檔:https://docs.p...

    PascalXie 評論0 收藏0
  • flask文檔學(xué)習(xí)筆記1-快速入門

    摘要:示例如下靜態(tài)路由使用動態(tài)變量的路由未指定變量類型使用動態(tài)變量的路由指定變量類型指定的路由變量,可以作為被裝飾的函數(shù)參數(shù)傳入進來。 開始決定認(rèn)真的在網(wǎng)上寫一些東西,主要原因還是在于希望能提升學(xué)習(xí)效果。雖說python寫了有幾年,但是web后端框架的確沒怎么接觸過,買了本狗書寥寥草草的過了一遍,發(fā)現(xiàn)很多東西還是理解不深,真的是好記性不如爛筆頭,知識也要從基礎(chǔ)開始,退回來好好看看官方文檔,再...

    lingdududu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<