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如何实现MySQL实例初始化详解
Nov 06 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python requests模块session代码实例
Apr 14 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
smarty section简介与用法分析
2008/10/03 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
jquery实现图片放大镜效果
2020/12/23 jQuery
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python3处理含有中文的url方法
2018/05/10 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
初二物理教学反思
2014/01/29 职场文书
企业内部培训方案
2014/02/04 职场文书
中秋晚会策划方案
2014/06/12 职场文书
出国留学英文自荐信
2015/03/25 职场文书