Python装饰器用法示例小结

本文实例讲述了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多层装饰器用法实例分析
  • Python装饰器用法实例总结
  • 深入理解python中的闭包和装饰器
  • 详解Python中的装饰器、闭包和functools的教程
  • 巧用Python装饰器 免去调用父类构造函数的麻烦
  • python重试装饰器示例
  • Python中的多重装饰器
  • Python装饰器decorator用法实例
(0)

相关推荐

  • Python装饰器用法实例总结

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.简单的说装饰器就是一个用来返回函数的函数. 它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用. 概括的讲,装饰器的作用就是为已经

  • Python多层装饰器用法实例分析

    本文实例讲述了Python多层装饰器用法.分享给大家供大家参考,具体如下: 前言 Python 的装饰器能够在不破坏函数原本结构的基础上,对函数的功能进行补充.当我们需要对一个函数补充不同的功能,可能需要用到多层的装饰器.在我的使用过程中,遇到了两种装饰器层叠的情况,这里把这两种情况写下来,作为踩坑记录. 情况1 def A(funC): def decorated_C(funE): def decorated_E_by_CA(*args, **kwargs): out = funC(funE)

  • 巧用Python装饰器 免去调用父类构造函数的麻烦

    先看一段代码: 复制代码 代码如下: class T1(threading.Thread): def __init__(self, a, b, c): super(T1, self).__init__() self.a = a self.b = b self.c = c def run(self): print self.a, self.b, self.c 代码定义了一个继承自threading.Thread的class,看这句 super(T1, self).__init__() 也有些人喜欢

  • Python装饰器decorator用法实例

    本文实例讲述了Python装饰器decorator用法.分享给大家供大家参考.具体分析如下: 1. 闭包(closure) 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中被引用的变量叫做这个函数的环境变量.环境变量和这个非全局函数一起构成了闭包. 复制代码 代码如下: def outer(x):     y = [1,2,3]     def inner():         print x         print y

  • 详解Python中的装饰器、闭包和functools的教程

    装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以使用装饰器模式.简单来说Python中的装饰器就是指某些函数或其他可调用对象,以函数或类作为可选输入参数,然后返回函数或类的形式.通过这个在Python2.6版本中被新加入的特性可以用来实现装饰器设计模式. 顺便提一句,在继续阅读之前,如果你对Python中的闭包(Closure)概念不清楚,请查看本文结尾后的附录,如果没有闭包的相关概念,很难恰当的理解P

  • Python中的多重装饰器

    多重装饰器,即多个装饰器修饰同一个对象[实际上并非完全如此,且看下文详解] 1.装饰器无参数: 复制代码 代码如下: >>> def first(func):     print '%s() was post to first()'%func.func_name     def _first(*args,**kw):         print 'Call the function %s() in _first().'%func.func_name         return func

  • Python实现对一个函数应用多个装饰器的方法示例

    本文实例讲述了Python实现对一个函数应用多个装饰器的方法.分享给大家供大家参考,具体如下: 下面的例子展示了对一个函数应用多个装饰器,可以加多个断点,在debug模式下,查看程序的运行轨迹... #!/usr/bin/env python #coding:utf-8 def decorator1(func): def wrapper(): print 'hello python 之前' func() return wrapper def decorator2(func): def wrapp

  • python重试装饰器示例

    利用python 写一些网络服务的时候,当网络状况不好,或者资源占用过多,任务拥塞的情况下,总会抛出一些异常,当前任务就被终止了,可以很好的利用@装饰器,写一个重试的装饰器,这样比较python!执行结果: 复制代码 代码如下: WARNING:root:timed out, Retrying in 3 seconds...WARNING:root:timed out, Retrying in 6 seconds...WARNING:root:timed out, Retrying in 12

  • 深入理解python中的闭包和装饰器

    python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). 以下说明主要针对 python2.7,其他版本可能存在差异. 也许直接看定义并不太能明白,下面我们先来看一下什么叫做内部函数: def wai_hanshu(canshu_1): def nei_hanshu(canshu_2): # 我在函数内部有定义了一个函数 return canshu_1*canshu_2 return

  • Python装饰器用法示例小结

    本文实例讲述了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'

  • Python装饰器用法与知识点小结

    本文实例讲述了Python装饰器用法与知识点.分享给大家供大家参考,具体如下: (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): start_time = time.time() func(*args,**kwargs) stop_time = time.time() print('the func run time is %s' % (stop_time

  • 深入浅出分析Python装饰器用法

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 用类作为装饰器 示例一 最初代码: class bol(object): def __init__(self, func): self.func = func def __call__(self): return "<b>{}</b>".format(self.func()) class ita(object): def __init__(self, func): self.func = f

  • Python装饰器用法实例分析

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 无参数的装饰器 #coding=utf-8 def log(func): def wrapper(): print 'before calling ',func.__name__ func() print 'end calling ',func.__name__ return wrapper @log def hello(): print 'hello' @log def hello2(name): print 'hello

  • python函数装饰器之带参数的函数和带参数的装饰器用法示例

    本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(func): def wrap(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) end_time = time.time() print('运行时间为', end_time-start_time) return

  • Python装饰器使用示例及实际应用例子

    测试1 deco运行,但myfunc并没有运行 复制代码 代码如下: def deco(func):     print 'before func'     return func def myfunc():     print 'myfunc() called'   myfunc = deco(myfunc) 测试2 需要的deco中调用myfunc,这样才可以执行 复制代码 代码如下: def deco(func):     print 'before func'     func()   

  • Python装饰器(decorator)定义与用法详解

    本文实例讲述了Python装饰器(decorator)定义与用法.分享给大家供大家参考,具体如下: 什么是装饰器(decorator) 简单来说,可以把装饰器理解为一个包装函数的函数,它一般将传入的函数或者是类做一定的处理,返回修改之后的对象.所以,我们能够在不修改原函数的基础上,在执行原函数前后执行别的代码.比较常用的场景有日志插入,事务处理等. 装饰器 最简单的函数,返回两个数的和 def calc_add(a, b): return a + b calc_add(1, 2) 但是现在又有新

  • Python装饰器原理与用法分析

    本文实例讲述了Python装饰器原理与用法.分享给大家供大家参考,具体如下: 1.装饰器的本质是函数,主要用来装饰其他函数,也就是为其他函数添加附加功能 2.装饰器的原则: (1) 装饰器不能修改被装饰的函数的源代码 (2) 装饰器不能修改被装饰的函数的调用方式 3.实现装饰器的知识储备 (1) Python中函数即'变量' a.变量在Python中的存储 x='Tomwenxing' y=x [说明]: 当Python解释器遇到语句x='Tomwenxing'时,它主要完成了两样工作: 1.在

随机推荐