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 27 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
python列表推导式操作解析
Nov 26 Python
python队列原理及实现方法示例
Nov 27 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
python编写扎金花小程序的实例代码
Feb 23 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
Smarty保留变量用法分析
2016/05/23 PHP
一个javascript参数的小问题
2008/03/02 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
python中set()函数简介及实例解析
2018/01/09 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python是否适合网页编程详解
2019/10/04 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
建筑总经理岗位职责
2014/02/02 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
党建工作汇报材料
2014/12/24 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript