主题: decorator的使用
环境: winxp pro + sp2 + python2.5
备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式
本文就是因
kdekid 在该blog回帖后,我对python decorator的使用整理出的一点心得,在上述提及的blog中的代码亦可修改为本文所描述的方式,各位同学可自己试试 :)
具体的语法描述可参考: python manuals -- Language Reference -- 7.Compound statements -- 7.6 Function definitions
代码:
python 代码
-
-
-
- def decorator(fun):
- def ifun(*args, **kwargs):
- args = (i+1 for i in args)
- return fun(*args, **kwargs)
- return ifun
-
- def decorator1(arg):
- def _decorator1(fun):
- def ifun(*args, **kwargs):
- args = (i+arg for i in args)
- return fun(*args, **kwargs)
- return ifun
- return _decorator1
-
-
- @decorator
- def fun1(x,y,z):
- return x+y+z
-
- arg = 2
-
- @decorator1(arg)
- def fun2(x,y,z):
- return x+y+z
-
-
- a = 3
- b = 4
- c = 5
-
- print fun1(a,b,c)
- print fun2(a,b,c)
测试:保存为文件,直接执行即可
测试结果:
分享到:
- 2007-11-01 23:01
- 浏览 4392
- 评论(0)
- 论坛回复 / 浏览 (0 / 3037)
- 查看更多
相关推荐
python_oneline.py: 几个小例子告诉你, 一行Python代码能干哪些事 python_requests.py: Python中最好用的爬虫库Requests代码实例 python_functional.py: Python进阶: 函数式编程实例(附代码) python_decorator.py:...
本文研究的主要是python实现Decorator模式,具体介绍如下。 一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者类)。首先来看一个简单的例子: # -*- coding: utf-8 -*- ...
python_oneline.py: 几个小例子告诉你, 一行Python代码能干哪些事 python_requests.py: Python中最好用的爬虫库Requests代码实例 python_functional.py: Python进阶: 函数式编程实例(附代码) python_decorator.py:...
本文实例讲述了Python实现对一个函数...#coding:utf-8 def decorator1(func): def wrapper(): print 'hello python 之前' func() return wrapper def decorator2(func): def wrapper(): func() print 'hello p
Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1. class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls....
类型装饰器基于装饰器的Python类型检查实现。...快速开始使用pip安装软件包: pip install typedecorator您现在可以在代码中开始使用它了# import the decorators and the typecheck setup functionfro
宏示例 只是一堆Rust宏实现。 例子 decorator ( cargo run --example decorator-eg )遵循Python装饰器模式。 这几乎是在完成的。
装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思。 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会说明它们是自上而下的,比如下面...
要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用。既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一个参数传递或返回。同时,...
特征带通配符的命名空间听时间(TTL) 通过装饰器或回调使用轻巧的实现,良好的性能安装pymitter是注册的,因此使用pip进行安装非常容易: pip install pymitter例子基本用法 from pymitter import EventEmitteree =...
合理使用装饰器可以简化开发,并且使得代码更加清晰。下面我们分别介绍两种装饰器,不带参数的装饰器和带参数的装饰器。 一、不带参数的装饰器 我们用一个实际的例子来引入装饰器的概念,比如我们现在有一个方法A()...
有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为,通过使用类似例中的接口将修改动作封装在装饰对象中。 decorator 可以动态地修改函数、方法或类的功能,而无需创建子类或修改类的源代码。正...