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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
python图像处理之镜像实现方法
May 30 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
python取代netcat过程分析
Feb 10 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python 链接sqlserver 写接口实例
Mar 11 Python
Jupyter notebook如何修改平台字体
May 13 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
python中pymysql包操作数据库方法
Apr 19 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
入学生会自荐书范文
2014/02/05 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
污水处理保证书
2015/05/09 职场文书
地球上的星星观后感
2015/06/02 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang