python装饰器初探(推荐)


Posted in Python onJuly 21, 2016

一、含有一个装饰器

#encoding: utf-8

############含有一个装饰器#########
def outer(func):
  def inner(*args, **kwargs):#要装饰f1(),这里用这俩形式参数,可以接受任意个参数,不管f1定义几个参数
    print "1"
    r = func(*args, **kwargs)#这里要用func,不要用f1
    print "2"
    return r
  return inner

@outer #这里outer不要加括号
def f1(a1, a2):
  print "a1 + a2 = "
  return a1 + a2

f1(1,2)

二、含有两个(多个)装饰器

############含有二个装饰器#########

def outer0(func):#第一个
  def inner(*args, **kwargs):
    print "AAAAAAAAA"
    r = func(*args, **kwargs)
    print "BBBBBBBB"
    return r
  return inner

def outer(func): #第二个
  def inner(*args, **kwargs):#要装饰f1(),这里用这俩形式参数,可以接受任意个参数,不管f1定义几个参数
    print "1"
    r = func(*args, **kwargs)#这里要用func,不要用f1
    print "2"
    return r
  return inner
@outer0 #俩装饰器,流程就是:执行f1()的时候,先执行outer0.inner(),outer0.inner().func调用outer的inner函数,也就是outer.inner()函数作为outer0的参数,
     # 然后outer.inner().func再调用f1()
@outer #这里outer不要加括号
def f1(a1, a2):
  print "a1 + a2 = %d" %(a1+a2)
  return 1

f1(1,2)

以上这篇python装饰器初探(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python之时间和日期使用小结
Feb 14 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
基于h5py的使用及数据封装代码
Dec 26 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
Python Http请求json解析库用法解析
Nov 28 Python
python魔法方法-自定义序列详解
Jul 21 #Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 #Python
分享python数据统计的一些小技巧
Jul 21 #Python
python中print的不换行即时输出的快速解决方法
Jul 20 #Python
Python全局变量用法实例分析
Jul 19 #Python
python对象及面向对象技术详解
Jul 19 #Python
python异常和文件处理机制详解
Jul 19 #Python
You might like
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
php实现encode64编码类实例
2015/03/24 PHP
php实现对象克隆的方法
2015/06/20 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
Python类属性的延迟计算
2016/10/22 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
python实现求最长回文子串长度
2018/01/22 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
珍珠鸟教学反思
2014/02/01 职场文书
2014年电工工作总结
2014/11/20 职场文书
三下乡个人总结
2015/03/04 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers