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 Django批量导入不重复数据
Mar 25 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Python3实现购物车功能
Apr 18 Python
对python中的xlsxwriter库简单分析
May 04 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
Python3爬虫全国地址信息
Jan 05 Python
Django框架自定义session处理操作示例
May 27 Python
python基础 range的用法解析
Aug 23 Python
Python日志syslog使用原理详解
Feb 18 Python
keras得到每层的系数方式
Jun 15 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 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脚本的10个技巧(1)
2006/10/09 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
python爬虫基本知识
2018/03/05 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
材料化学应届生求职信
2013/10/09 职场文书
投标承诺书范本
2014/03/27 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
Python编写nmap扫描工具
2021/07/21 Python