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

 更新时间:2015年03月13日 12:02:42   作者:niuniu  
这篇文章主要介绍了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中字符串变二维数组的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python 使用office365邮箱的示例

    Python 使用office365邮箱的示例

    这篇文章主要介绍了Python 使用office365邮箱的示例,帮助大家利用python进行高效办公,感兴趣的朋友可以了解下
    2020-10-10
  • python中random.randint和random.randrange的区别详解

    python中random.randint和random.randrange的区别详解

    这篇文章主要介绍了python中random.randint和random.randrange的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python图形用户界面tkinter之按钮Button的使用说明

    python图形用户界面tkinter之按钮Button的使用说明

    这篇文章主要介绍了python图形用户界面tkinter之按钮Button的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 基于Python写个"点球大战"小游戏

    基于Python写个"点球大战"小游戏

    这篇文章主要为大家详细介绍了如何利用Python写个简单的"点球大战"小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-12-12
  • python 搭建简单的http server,可直接post文件的实例

    python 搭建简单的http server,可直接post文件的实例

    今天小编就为大家分享一篇python 搭建简单的http server,可直接post文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于python修改srt字幕的时间轴

    基于python修改srt字幕的时间轴

    这篇文章主要介绍了基于python修改srt字幕的时间轴,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python3中pip3安装出错,找不到SSL的解决方式

    python3中pip3安装出错,找不到SSL的解决方式

    今天小编就为大家分享一篇python3中pip3安装出错,找不到SSL的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python tkinter基本属性详解

    python tkinter基本属性详解

    这篇文章主要介绍了python tkinter基本属性详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python爬虫新手入门之初学lxml库

    Python爬虫新手入门之初学lxml库

    这篇文章主要给大家介绍了关于Python爬虫新手入门之初学lxml库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论