python通过装饰器检查函数参数数据类型的方法
本文实例讲述了python通过装饰器检查函数参数数据类型的方法。分享给大家供大家参考。具体分析如下:
这段代码定义了一个python装饰器,通过此装饰器可以用来检查指定函数的参数是否是指定的类型,在定义函数时加入此装饰器可以非常清晰的检测函数参数的类型,非常方便
defaccepts(exception,**types):
defcheck_accepts(f):
assertlen(types)==f.func_code.co_argcount,\
'acceptnumberofargumentsnotequalwithfunctionnumberofargumentsin"%s"'%f.func_name
defnew_f(*args,**kwds):
fori,vinenumerate(args):
iftypes.has_key(f.func_code.co_varnames[i])and\
notisinstance(v,types[f.func_code.co_varnames[i]]):
raiseexception("arg'%s'=%rdoesnotmatch%s"%\
(f.func_code.co_varnames[i],v,types[f.func_code.co_varnames[i]]))
deltypes[f.func_code.co_varnames[i]]
fork,vinkwds.iteritems():
iftypes.has_key(k)andnotisinstance(v,types[k]):
raiseexception("arg'%s'=%rdoesnotmatch%s"%\
(k,v,types[k]))
returnf(*args,**kwds)
new_f.func_name=f.func_name
returnnew_f
returncheck_accepts
defexmaple():
@accepts(Exception,a=int,b=list,c=(str,unicode))
deftest(a,b=None,c=None)
print'ok'
test(13,c=[],b='df')
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西