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中的lstrip()方法使用简介
May 19 Python
基于python实现微信模板消息
Dec 21 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
Python基于分水岭算法解决走迷宫游戏示例
Sep 26 Python
python实现图片处理和特征提取详解
Nov 13 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
Django 反向生成url实例详解
Jul 30 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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用正则判断是否为数字的方法
2016/03/25 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
shiro授权的实现原理
2017/09/21 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
python读文件逐行处理的示例代码分享
2013/12/27 Python
python删除列表中重复记录的方法
2015/04/28 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
高中毕业自我评价
2014/02/08 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
python实现自动化群控的步骤
2021/04/11 Python
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS