function decorator:
语法:
@decoratorname
def decoratoredfunction
例如:
python 代码
- class C:
- @classmethod
- def meth(cls):
- ...
上面的 @classmethod 等于 meth=classmethod(meth)
decorator 能够用于为函数(普通函数或类的成员函数)添加功能, 不能够用来为类动态添加方法.
decorator 把被修饰的函数作为参数, 其返回值通常是一个函数或者类
技术上讲, 任何只带一个参数能够被调用的对象都可以被当作decorator使用, 但是这个定义过于宽泛而无用, 所以可以把decorator分为以下两类:
- signature-preserving decorator: 例如, 一个输入为一个函数输出与该函数的输出一致的可调用对象
- signature-changing decorator: 例如, 内部类 staticmethod 和 classmethod 就属于这种类型, 因为它们会把被修饰的函数作为输入, 返回一个描述对象, 这个对象不是函数, 不可调用
Decorator的用法:
- @catch_on((exception list), functor)
其定义如下:
python 代码
- from types import *
-
- def catch_on(excepts, act):
- def call(proc, *args, **kw):
- try:
- return proc(*args, **kw)
- except excepts, e:
- if not act and type(act) is types.FunctionType:
- act(e)
- pass
- except Exception, e:
- if not isinstance(e, excepts):
- raise
-
- return decorator(call)
-
- def x():
- raise NameError, "NameError"
-
- def boo():
- raise KeyError, "KeyError"
-
- def bar():
- raise ValueError, "ValueError"
-
- @catch_on((KeyError, ValueError), lambda e: None)
- def koo():
- x()
- boo()
- bar()
-
- @catch_on((KeyError, ValueError), lambda e: None)
- def goo():
- boo()
- bar()
- x()
-
- koo()
- goo()
分享到:
- 2007-04-08 12:47
- 浏览 3241
- 评论(4)
- 论坛回复 / 浏览 (4 / 4887)
- 查看更多
相关推荐
odoo包
主要介绍了Python decorator拦截器代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
资源分类:Python库 所属语言:Python 资源全名:drf_nested_decorator-0.3-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本文实例讲述了Python装饰器decorator用法。分享给大家供大家参考。具体分析如下: 1. 闭包(closure) 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中...
本文研究的主要是python实现Decorator模式,具体介绍如下。 一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者类)。首先来看一个简单的例子: # -*- coding: utf-8 -*- ...
主要介绍了Python中设计模式之Decorator装饰器模式模式,文中详细地讲解了装饰对象的相关加锁问题,需要的朋友可以参考下
软件介绍: 这个decorator python是网友分享过来的一个模块文件,既然下载肯定会知道它的用途。
离线安装包,亲测可用
python中的decorator通常为输入一个函数,经过装饰后返回另一个函数。 比较常用的功能一般使用decorator来实现,例如python自带的staticmethod和classmethod。 装饰器有两种形式: 复制代码 代码如下: @A def foo()...
python-decorator-3.0.1-3.1.el6.noarch
python中完善decorator共5页.pdf.zip
资源分类:Python库 所属语言:Python 资源全名:cache_decorator-1.2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
主要介绍了Python中decorator使用实例,本文讲解了如何调用decorator、decorator函数的定义、decorator的应用场景等内容,需要的朋友可以参考下
超时装饰器安装从源代码: python setup.py install从pypi: pip install timeout-decorator用法import timeimport timeout_decorator@timeout_decorator.timeout(5)def mytest(): print("Start") for i in range(1,...
主要介绍了python中的decorator的作用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
python中编写带参数decorator共5页.pdf.zip
python中编写无参数decorator共4页.pdf.zip
Decorator 与 Python 之前引入的元编程抽象有着某些共同之处:即使没有这些技术,您也一样可以实现它们所提供的功能。正如 Michele Simionato 和我在 可爱的 Python 专栏的早期文章 中指出的那样,即使在 Python 1.5...