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原始字符串(raw strings)用法实例
Oct 13 Python
Python3搜索及替换文件中文本的方法
May 22 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
Python 统计字数的思路详解
May 08 Python
Tensorflow 查看变量的值方法
Jun 14 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
python求最大值最小值方法总结
Jun 25 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
Python Subprocess模块原理及实例
Aug 26 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
Vue实现购物车功能
2017/04/27 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
如何使用Python 打印各种三角形
2019/06/28 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
高考备战决心书
2014/03/11 职场文书
廉政教育的心得体会
2014/09/01 职场文书
党性心得体会
2014/09/03 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Tomcat用户管理的优化配置详解
2022/03/31 Servers