python-有关Python装饰器疑问?

问题描述

有关Python装饰器疑问?

最近学习了python的装饰器,基本上理解了。但是还是有一个小小问题没有找到答案,在这请教一下各位同行。(也许我有知识点遗漏,在这查漏补缺)
假设对一函数进行了装饰之后,在调用该函数的时候就是装饰后的结果,那么我该如何恢复原来函数功能呢。
比如我的程序里有其他部分代码在调用该函数时需要得到装饰后的功能,然而另外一部分代码只需要该函数本来功能。比如
#func函数已经被装饰过,然后执行以下代码
a=func() //假设这里实际需要装饰后的功能
b=func()//假设这里实际不需要装饰后的功能

解决方案

这种应该拆成两个函数来分别调用

时间: 2024-09-17 12:48:20

python-有关Python装饰器疑问?的相关文章

介绍Python的@property装饰器的用法

  这篇文章主要介绍了介绍Python的@property装饰器的用法,是Python学习进阶中的重要知识,代码基于Python2.x版本,需要的朋友可以参考下 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: ? 1 2 s = Student() s.score = 9999 这显然不合逻辑.为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score

Python中的装饰器用法详解_python

本文实例讲述了Python中的装饰器用法.分享给大家供大家参考.具体分析如下: 这里还是先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: 复制代码 代码如下: @makebold @makeitalic def say():    return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出的答案是: 复制代码 代码如下: def makebold(fn):    

Python中的装饰器用法详解

来源:http://www.jb51.net/article/59867.htm 来源:http://blog.csdn.net/mdl13412/article/details/22608283 这篇文章主要介绍了Python中的装饰器用法,以实例形式详细的分析了Python中的装饰器的使用技巧及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Python中的装饰器用法.分享给大家供大家参考.具体分析如下: 这里还是先由stackoverflow上面的一个问题引起吧,如

Python深入05 装饰器

原文:Python深入05 装饰器 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法或者类进行加工.在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果.相对于其它方式,装饰器语法简单,代码可读性高.因此,装饰器在Python项目中有广泛的应用. 装饰器最早在Python 2.

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

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

python @age.setter 装饰器 怎么用p.age=1调用不了

问题描述 python @age.setter 装饰器 怎么用p.age=1调用不了 #源码: class Person: def init(self,name,age): print('gouzao') self.__name=name self.__age=age @property def age(self): print('thisis get') return self.__age @age.setter def age(self,value): print('jinlaileme')

理解Python中的装饰器

文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出的答案是: def makebold(fn): def wrapped(): return "<b>" + fn() + "</b>&q

python闭包以及装饰器

通俗的定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).它只不过是个"内层"的函数,由一个名字(变量)来指代,而这个名字(变量)对于"外层"包含它的函数而言,是本地变量; 1 #示例一: 2 #!/usr/bin/python 3 #encoding=utf-8 4 5 def add_a(num1): 6 print "num1:%d" % num1 7 def add

python中的装饰器详解_python

在了解装饰器的之前一定要先了解函数作为参数传递, 什么是函数内嵌,请参考我之前写的博客函数简介 因为在python里面,函数也是对象,也可以作为参数进行传递.python装饰器本质也是一种特殊函数,它接收的参数是函数对象,然后动态地函数参数添加额外的功能,而不用修改原有的函数对象.python装饰器传入的参数是函数,返回的值也是函数! python装饰器思想有点类似设计模式的装饰模式, 其意图是动态地给函数对象添加额外的功能.比如像增加日志打印的功能,有点面向切面编程(AOP)的感觉.装饰器语法