国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python通過裝飾器檢查函數參數數據類型的方法

2020-02-23 00:20:15
字體:
來源:轉載
供稿:網友

本文實例講述了python通過裝飾器檢查函數參數數據類型的方法。分享給大家供大家參考。具體分析如下:

這段代碼定義了一個python裝飾器,通過此裝飾器可以用來檢查指定函數的參數是否是指定的類型,在定義函數時加入此裝飾器可以非常清晰的檢測函數參數的類型,非常方便
代碼如下:def accepts(exception,**types):
    def check_accepts(f):
        assert len(types) == f.func_code.co_argcount, /
        'accept number of arguments not equal with function number of arguments in "%s"' % f.func_name
        def new_f(*args, **kwds):
            for i,v in enumerate(args):
                if types.has_key(f.func_code.co_varnames[i]) and /
                    not isinstance(v, types[f.func_code.co_varnames[i]]):
                    raise exception("arg '%s'=%r does not match %s" % /
                        (f.func_code.co_varnames[i],v,types[f.func_code.co_varnames[i]]))
                    del types[f.func_code.co_varnames[i]]
            for k,v in kwds.iteritems():
                if types.has_key(k) and not isinstance(v, types[k]):
                    raise exception("arg '%s'=%r does not match %s" % /
                        (k,v,types[k]))
            return f(*args, **kwds)
        new_f.func_name = f.func_name
        return new_f
    return check_accepts
def exmaple():
    @accepts(Exception,a=int,b=list,c=(str,unicode))
    def test(a,b=None,c=None)
        print 'ok'
    test(13,c=[],b='df')

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 义马市| 简阳市| 安化县| 呈贡县| 东台市| 海林市| 南和县| 屯留县| 乐陵市| 秭归县| 营山县| 宕昌县| 棋牌| 昌邑市| 日照市| 长泰县| 静安区| 兴安盟| 六枝特区| 西和县| 多伦县| 防城港市| 原阳县| 达拉特旗| 婺源县| 元阳县| 苏尼特右旗| 宜良县| 渝北区| 合川市| 长泰县| 忻州市| 宁国市| 微山县| 峨边| 青海省| 正阳县| 安龙县| 图片| 天台县| 虞城县|