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

首頁 > 編程 > Python > 正文

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

2019-11-25 17:57:09
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青川县| 鱼台县| 米泉市| 吴旗县| 原阳县| 扎赉特旗| 西林县| 泰和县| 石渠县| 东台市| 华宁县| 仲巴县| 商洛市| 丹棱县| 平远县| 项城市| 拜泉县| 榆树市| 宜宾市| 同心县| 邹城市| 阳朔县| 育儿| 湖南省| 昭觉县| 新晃| 和平区| 新河县| 丰城市| 巢湖市| 连江县| 石城县| 松江区| 扎兰屯市| 拜泉县| 紫阳县| 西城区| 南涧| 清河县| 石首市| 营口市|