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获取apk文件URL地址实例
Nov 01 Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
python getopt详解及简单实例
Dec 30 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
Python编程之string相关操作实例详解
Jul 22 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
Python实现Restful API的例子
Aug 31 Python
wxPython实现绘图小例子
Nov 19 Python
Python echarts实现数据可视化实例详解
Mar 03 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
一个php作的文本留言本的例子(四)
2006/10/09 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python生成随机图形验证码详解
2017/11/08 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Python subprocess库的使用详解
2018/10/26 Python
python微信好友数据分析详解
2018/11/19 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
教育学专业毕业生的自我评价
2013/11/21 职场文书
电子商务个人自荐信
2013/12/12 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript