zoukankan      html  css  js  c++  java
  • python通过装饰器检查函数参数的数据类型的代码

    把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容。
    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
    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]))

    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')




  • 相关阅读:
    C# 5注释
    C# 4关键字
    C# 3练习题
    python之子类调用父类的同名属性和方法
    python之继承
    python之对象删除和输出
    python之r,w,a
    python之类中的方法和属性
    python之面向对象
    python之os对文件的操作
  • 原文地址:https://www.cnblogs.com/yumiban/p/11398780.html
Copyright © 2011-2022 走看看