源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python通过装饰器检查函数参数数据类型的方法

  • 时间:2020-05-22 23:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python通过装饰器检查函数参数数据类型的方法
本文实例讲述了python通过装饰器检查函数参数数据类型的方法。分享给大家供大家参考。具体分析如下: 这段代码定义了一个python装饰器,通过此装饰器可以用来检查指定函数的参数是否是指定的类型,在定义函数时加入此装饰器可以非常清晰的检测函数参数的类型,非常方便
[u]复制代码[/u] 代码如下:
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程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部