零碎python学习笔记(四) - 20121211 - 函数修饰符@
来源:互联网 发布:吕丽萍反对同性恋知乎 编辑:程序博客网 时间:2024/05/22 12:27
函数修饰符@(decorator)
这个东西不错,用起来有点像java里的interceptor(希望我还没记错……好久没写java了),但是其实有很高的自由度。
看了看代码,其原理应该是用输入的函数对象构成一个新函数(当然也可以不用这个输入的对象,实现一个完全代码无关的函数!),然后返回这个新函数,于是每次原函数调用时,运行的其实是新函数的函数体。应该还是很好懂的。for example:
import timedef rec_proc_time(func): # 生成的新函数 def modified_func(*arg, **args): start_time = time.clock() # 新函数里使用了原函数 - 也可以不使用 r = func(*arg, **args) print "function {%s}" % (func.__name__,), \ "Process time:", time.clock() - start_time, "sec" # 这里新函数的返回值就使用原函数的返回值 - 也可以不使用 return r # 然后返回这个新函数,于是每次调用原函数时,会使用替代的新函数体。 return modified_func
更新:带参数的修饰符
def redir_stdin(input_file_path=default_input_file_path): # argument list. def real_redir_stdin(func): # now its the real decorator. def modified_func(*arg, **args): oldstdin = sys.stdin inputfile = open(input_file_path, 'r') sys.stdin = inputfile r = func(*arg, **args) sys.stdin = oldstdin return r return modified_func return real_redir_stdin
- 零碎python学习笔记(四) - 20121211 - 函数修饰符@
- 零碎python学习笔记(四) - 20121219
- python学习笔记(零碎)
- 零碎笔记(四)
- 零碎python学习笔记(一) - 20121202
- 零碎python学习笔记(二) - 20121205
- 零碎python学习笔记(三) - 20121207
- Python.Numpy学习零碎笔记之便捷函数
- Java学习笔记(四)修饰符及访问权限
- Python 函数修饰符(装饰器)的学习
- python 修饰符函数
- Python修饰符 (一)—— 函数修饰符 “@”
- "Python"学习笔记(四)(函数一)
- “Python"学习笔记(四)(函数二)
- Python学习笔记(四)函数式编程
- Python学习笔记(四)-- 函数中的参数传递
- Python学习笔记(四)--函数式编程
- python学习笔记(四) - 函数式编程
- Android中实现图片的拖拽显示
- Jugs_1005
- Maven总结
- java 类与对象 1---static关键字
- 电子方向开发工程师的职场人生路(转)
- 零碎python学习笔记(四) - 20121211 - 函数修饰符@
- 内排序算法小结
- tomcat java环境配置
- Win7安装oracle 10 g
- HTML中class和id标签的区别
- Visual Studio快捷键参考
- UVA 10167
- java各种数据转换成json
- 递归bom主料件的元件信息