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




  • 相关阅读:
    Lucky Permutation Triple 构造
    HDU4283:You Are the One(区间DP)
    D. Match & Catch 后缀数组
    数学选讲 orz
    D
    一步一步线段树
    湖科大校赛第三题
    最大流部分
    bfs题目集锦
    hdu1429 bfs+状态压缩
  • 原文地址:https://www.cnblogs.com/yumiban/p/11398780.html
Copyright © 2011-2022 走看看