python通过装饰器检查函数参数数据类型的方法
2015-03-13 12:02
1006 查看
这段代码定义了一个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
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程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- python通过装饰器检查函数参数数据类型的方法
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- python 函数定义和内置函数isinstance以及数据类型检查type的使用
- SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
- Python中list数据类型的基本函数方法
- Python数据类型和相关函数方法
- Python中实现参数类型检查的简单方法
- python和php的基本数据类型的定义赋值及常用方法函数
- Python参数类型检查的简单方法
- SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- php 函数或者方法预设接口类型 运行时类型检查
- Matlab函数间通过workspace进行数据共享的方法
- DAL层强类型数据集中有个方法通过存储过程RETURN 5,在BLL的类里怎样取得这个值?
- python中函数参数传递的几种方法
- python 装饰器功能以及函数参数使用介绍
- C#调用VC DLL接口函数参数类型转换方法介绍
- SQL报错“参数数据类型 text 对于 replace 函数的参数 1 无效”
- C#调用VC DLL接口函数参数类型转换的方法