手机
当前位置:查字典教程网 >脚本专栏 >python >python通过装饰器检查函数参数数据类型的方法
python通过装饰器检查函数参数数据类型的方法
摘要:本文实例讲述了python通过装饰器检查函数参数数据类型的方法。分享给大家供大家参考。具体分析如下:这段代码定义了一个python装饰器,通...

本文实例讲述了python通过装饰器检查函数参数数据类型的方法。分享给大家供大家参考。具体分析如下:

这段代码定义了一个python装饰器,通过此装饰器可以用来检查指定函数的参数是否是指定的类型,在定义函数时加入此装饰器可以非常清晰的检测函数参数的类型,非常方便

复制代码 代码如下: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程序设计有所帮助。

【python通过装饰器检查函数参数数据类型的方法】相关文章:

python 动态获取当前运行的类名和函数名的方法

python判断windows隐藏文件的方法

巧用Python装饰器 免去调用父类构造函数的麻烦

使用python 获取进程pid号的方法

python实现网页链接提取的方法分享

python操作MySQL数据库的方法分享

python读取注册表中值的方法

python爬取网站数据保存使用的方法

python函数返回多个值的示例方法

python实现dnspod自动更新dns解析的方法

精品推荐
分类导航