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学习笔记之常用函数及说明
May 23 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
解决python删除文件的权限错误问题
Apr 24 Python
python破解zip加密文件的方法
May 31 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
python判断变量是否为列表的方法
Sep 17 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
python中的getter与setter你了解吗
Mar 24 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
MYSQL环境变量设置方法
2007/01/15 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
javascript 写类方式之八
2009/07/05 Javascript
学习ExtJS border布局
2009/10/08 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Python控制台实现交互式环境执行
2020/06/09 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
大专生自荐书范文
2014/06/22 职场文书
安全施工责任书
2014/08/25 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python