Python装饰器用法示例小结


Posted in Python onFebruary 11, 2018

本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下:

下面的程序示例了python装饰器的使用:

示例一:

def outer(fun):
  print fun
  def wrapper(arg):
    result=fun(arg)
    print 'over!'
    return result
  return wrapper
@outer
def func1(arg):
  print 'func1',arg
  return 'very good!'
response=func1('python')
print response
print func1

运行结果:

<function func1 at 0x02A67D70>
func1 python
over!
very good!
<function wrapper at 0x02A67CF0>

示例二:

#!/usr/bin/env python
#coding:utf-8
def Filter(before_func,after_func):
  print before_func
  print after_func
  def outer(main_func):
    print main_func
    def wrapper(request,kargs):
      before_result=before_func(request,kargs)
      if(before_result!=None):
        return before_result;
      main_result=main_func(request,kargs)
      if(main_result!=None):
        return main_result;
      after_result=after_func(request,kargs)
      if(after_result!=None):
        return after_result;
    return wrapper
  return outer
def before(request,kargs):
  print request,kargs,'之前!'
def after(request,kargs):
  print request,kargs,'之后!'
@Filter(before,after)
def main(request,kargs):
  print request,kargs
main('hello','python')
print main

运行结果:

<function before at 0x02AC7BF0>
<function after at 0x02AC7C30>
<function main at 0x02AC7CF0>
hello python 之前!
hello python
hello python 之后!
<function wrapper at 0x02AC7D30>

我们可以加上很多断点,在Debug模式下运行,查看程序一步一步的运行轨迹。。。

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Python csv模块使用方法代码实例
Aug 29 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
Python自动化操作实现图例绘制
Jul 09 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
Aug 07 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
python PyTorch预训练示例
Feb 11 #Python
TensorFlow中权重的随机初始化的方法
Feb 11 #Python
python的staticmethod与classmethod实现实例代码
Feb 11 #Python
Python语言的变量认识及操作方法
Feb 11 #Python
利用Opencv中Houghline方法实现直线检测
Feb 11 #Python
tensorflow输出权重值和偏差的方法
Feb 10 #Python
详解tensorflow实现迁移学习实例
Feb 10 #Python
You might like
PHP仿盗链代码
2012/06/03 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
中国梦演讲稿教师篇
2014/04/23 职场文书
法人委托书
2014/07/31 职场文书
2015年清明节活动总结
2015/02/09 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
跑出一片天观后感
2015/06/08 职场文书
班级班风口号大全
2015/12/25 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书