对于无参数的装饰器,其装饰器函数的参数是要被装饰的函数对象名;
对于有参数的装饰器在调用时使用的是应用的参数,@timeStumpFunc_args(argv)的argv,已不再是要被装饰的函数对象名,所以必须在内部再定义一个函数getfunc()来接收要被装饰的函数对象。
#!/usr/bin/env python
# coding=gbk
"""
__title__ = '带参数和不带...
分类:
编程语言 时间:
2014-12-13 01:00:25
阅读次数:
210
不定时更新,不一定适合3.X,但一定适合2.7。
一、Python中的装饰器
def main():
def decorator_with_params(arg_of_decorator):
print arg_of_decorator
print '1'
def newDecorator(func):
p...
分类:
编程语言 时间:
2014-12-11 22:33:16
阅读次数:
214
高级闭包用法:#!/usr/bin/env python# !-*-coding:utf-8-*-"""高级装饰器和闭包实例"""import timedef logged(when): """ 输出函数的日志信息 :param when: 选取那种日志格式 """ d...
分类:
其他好文 时间:
2014-12-10 19:41:46
阅读次数:
141
python 在语法上对装饰模式进行了支持。
一、问题
有如下的一个函数,
def sum(x, y): print "x+y:", x+y
我们需要在每次调用 sum 函数的时候打印日志,但是我们并不希望修改sum函数。
二、解决方案
Solution 1:
最 brute-force 的方法,定义一个包裹函数, 在这个包裹函数的内部调用sum 函数(包裹函数和 ...
分类:
编程语言 时间:
2014-12-07 20:28:31
阅读次数:
288
最近看到
廖雪峰 的Python教程,对于学习Python的人来说,这可谓是一大福音,没有冗长的废话,只有最通俗易懂的语言,以及最清晰的解读。
下面是我对 装饰器 这一小节的总结, 以及自己的理解。
很多时候我会把Python的很多语法与C++相融合,在C++中,函数的名称即为函数的地址,我们可以通过定义"函数指针"变量,并且讲函数名称赋值给该变量,那么我们在调用函数的时候,就可以直接使用...
分类:
编程语言 时间:
2014-12-07 12:36:34
阅读次数:
240
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html 很不错的一篇文章http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html1. 装饰器入门1.1. 需求是怎么来的?装...
分类:
编程语言 时间:
2014-12-05 17:01:59
阅读次数:
276
1、问题问题:想要添加日志记录、性能监控、安全监测2、最初解决方案2.1、最初解决方案缺点:太多重复代码,且紧耦合2.2、抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损俱损2.3、使用装饰器模式/代理模式改进的解决方案装饰器模式:动态地给一个对象添加一些额外的职责。就增加功能来...
分类:
编程语言 时间:
2014-12-03 09:15:28
阅读次数:
218
修饰器是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果。相对于其它方式,装饰器语法简单,代码可读性高。因此,装饰器在Python项目中有广泛..
分类:
其他好文 时间:
2014-11-27 06:55:53
阅读次数:
154
装饰器--表示用于修饰UIElement的FrameworkElement的抽象类简单来说就是,在不改变一个UIElement结构的情况下,将一个Visual对象加到它上面.应用举例:现在我们拥有一个文本框,但是我们需要限定输入的字符串,当输入的是非法字符串的时候,要求将文本框的四周包裹一个红色的边...
1.>>> def deco(func):... print "In deco"... return func...>>> @deco... def foo():... print "In foo"...In deco #因为deco()返回的...
分类:
编程语言 时间:
2014-11-23 07:00:31
阅读次数:
191