python通过装饰器检查函数参数数据类型的方法


Posted in Python onMarch 13, 2015

本文实例讲述了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 相关文章推荐
Python3实现Web网页图片下载
Jan 28 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Python计算两个日期相差天数的方法示例
May 23 Python
python打包压缩、读取指定目录下的指定类型文件
Apr 12 Python
Python3中的json模块使用详解
May 05 Python
python可视化爬虫界面之天气查询
Jul 03 Python
linux环境中没有网络怎么下载python
Jul 07 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
python使用建议技巧分享(三)
Aug 18 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 Python
python实现简单温度转换的方法
Mar 13 #Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 #Python
Python比较两个图片相似度的方法
Mar 13 #Python
python通过urllib2获取带有中文参数url内容的方法
Mar 13 #Python
python将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 #Python
python通过正则查找微博@(at)用户的方法
Mar 13 #Python
python使用chardet判断字符串编码的方法
Mar 13 #Python
You might like
php代码运行时间查看类代码分享
2011/08/06 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
python迭代器的使用方法实例
2013/11/21 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
基于python实现简单日历
2018/07/28 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
python 实现逻辑回归
2020/12/30 Python
CSS3 边框效果
2019/11/04 HTML / CSS
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
毕业生就业意向书
2014/04/01 职场文书
教师一帮一活动总结
2014/07/08 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
英文自荐信范文
2015/03/25 职场文书
工作犯错保证书
2015/05/11 职场文书
python游戏开发之pygame实现接球小游戏
2022/04/22 Python