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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
使用PYTHON接收多播数据的代码
Mar 01 Python
Python操作SQLite简明教程
Jul 10 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
Django视图和URL配置详解
Jan 31 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 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下批量挂马和批量清马代码
2011/02/27 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
python计算对角线有理函数插值的方法
2015/05/07 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
利用Python如何生成便签图片详解
2018/07/09 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python中super函数用法实例分析
2019/03/18 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
用python发送微信消息
2020/12/21 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
财务人员岗位职责
2015/02/03 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
Python编程super应用场景及示例解析
2021/10/05 Python