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
- 浏览 3269
- 评论(4)
- 论坛回复 / 浏览 (4 / 4912)
- 查看更多
相关推荐
在"python decorator==4.4.2"版本中,我们可以探讨这个库提供的装饰器功能及其在Odoo中的应用。 首先,让我们理解什么是Python装饰器。装饰器本质上是一个接收函数作为参数并返回新函数的函数。通过在定义函数前...
python decorator & closure demo code for learning the use tips
### Python Decorator 拦截器详解 在深入探讨Python中的`decorator`(装饰器)之前,我们先来了解一下什么是装饰器以及它为何被称为“拦截器”。 #### 一、装饰器简介 装饰器是一种特殊类型的函数,它可以修改...
资源分类:Python库 所属语言:Python 资源全名:drf_nested_decorator-0.3-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
2. **装饰器(Decorator)**: 装饰器是Python中实现装饰模式的一种方式。它是一个可调用的对象,通常是一个函数,接收一个函数作为参数,并返回一个新的函数。装饰器可以用来增强或修改原函数的功能,如日志、性能...
Python中的装饰器模式是一种设计模式,它允许在不修改原有对象的情况下向其添加新的功能。装饰器模式在Python中有着广泛的应用,特别是在处理诸如认证、权限检查、日志记录、参数检查、同步加锁等与核心业务逻辑无关...
本文研究的主要是python实现Decorator模式,具体介绍如下。 一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者类)。首先来看一个简单的例子: # -*- coding: utf-8 -*- ...
这个"decorator python"模块是版本3.4.0的实现,其核心概念是通过函数来包装(即装饰)其他函数,以增强被装饰函数的行为。这个模块可能是由社区成员贡献并分享的,因此它属于"其他资源"类别。 在Python中,装饰器...
离线安装包,亲测可用
python中的decorator通常为输入一个函数,经过装饰后返回另一个函数。 比较常用的功能一般使用decorator来实现,例如python自带的staticmethod和classmethod。 装饰器有两种形式: 复制代码 代码如下: @A def foo()...
python-decorator-3.0.1-3.1.el6.noarch
Python中的装饰器(Decorator)是该编程语言的一个强大特性,它允许我们修改或增强函数、类等对象的行为,而无需更改其源代码。这个“python中完善decorator共5页.pdf.zip”文件很可能是关于深入理解和高效使用...
Python中的装饰器(Decorator)是高级函数编程的一个重要特性,它允许我们修改或增强其他函数的功能,而无需改动原函数的代码。在Python中,装饰器本质上是一个接收函数作为参数并返回新函数的函数。本资料"python中...
资源分类:Python库 所属语言:Python 资源全名:cache_decorator-1.2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
装饰器在Python编程中是一种强大的工具,它允许我们在不修改原始函数代码的前提下,为函数添加新的功能或行为。装饰器本质上是Python中的一个函数,它接收一个函数作为参数,并返回一个新的函数。这种设计模式在很多...
Python中的装饰器是一种强大的工具,它允许我们修改或增强函数、类或其他可调用对象的行为,而无需修改它们的源代码。在Python编程中,装饰器尤其常见,用于日志记录、性能测试、缓存、权限控制等场景。当我们谈论...
"potemkin_decorator-0.0.7-py3-none-any.whl" 是一个与Python相关的库,名为“Potemkin Decorator”,版本号为0.0.7。这个库是为Python3设计的,支持多种平台,其主要功能是提供装饰器(Decorator)功能。 装饰器...
《Python库解析:json_log_decorator-2.0.0》 在编程领域,尤其是Python社区,库是开发者的重要工具,它们提供了预定义的功能,帮助我们更高效地编写代码。今天我们要探讨的是一个名为`json_log_decorator`的Python...