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实现基于信息增益的决策树归纳
Dec 18 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
python实现两个文件夹的同步
Aug 29 Python
python系列 文件操作的代码
Oct 06 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Python如何给你的程序做性能测试
Jul 29 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
如何Python使用re模块实现okenizer
Apr 30 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下保存远程图片到本地的办法
2010/08/08 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
Javascript - HTML的request类
2006/07/15 Javascript
js计数器代码
2006/11/04 Javascript
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
express.js中间件说明详解
2019/03/19 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
企业安全生产责任书
2014/04/14 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
美丽心灵观后感
2015/06/01 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL