Python 第五天 装饰器】的更多相关文章

一,什么是装饰器 本质就是函数,功能是为其他函数添加附加功能 原则: 1,不修改被修饰函数的源代码 2,不修改被修饰函数的调用方式 例子: import time def timmer(func): def wapper(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) stop_time = time.time() print('函数的运行时间 %s' % (stop_time - start_time…
装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. def wrapper(func): def result(): print 'before' func() print 'after' return result @wrapper def foo(): print 'foo' import functools def wrapper(func): @functools.wraps(func) def wrapper(…
初学 Python(十五)--装饰器 初学 Python,主要整理一些学习到的知识点,这次是生成器. #-*- coding:utf-8 -*- import functools def current(): print 'nihao' current() g = current g() #函数有默认字段__name__(2个下划线) print current.__name__ print g.__name__ ''''' 装饰器的定义 在不改变某个函数的内部代码的情况下 在执行函数的前后加上…
前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰器详解(三) python设计模式之内置装饰器使用(四) python设计模式之迭代器与生成器详解(五) python自带装饰器 staticmethod staticmethod装饰器的功能是去除类的方法默认第一个参数是类的实例,使得该方法成为一个普通的函数,staticmethod是一个类,属于…
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   "备忘"的定义 "memoization"(备忘)这个词是由Donald Michie在1968年提出的,它基于拉丁语单词"memorandum"(备忘录),意思是"被记住".虽然它和单词"memorization"在某种…
之前用python简单写了一下斐波那契数列的递归实现(如下),发现运行速度很慢. def fib_direct(n): assert n > 0, 'invalid n' if n < 3: return n else: return fib_direct(n - 1) + fib_direct(n - 2) 然后大致分析了一下fib_direct(5)的递归调用过程,如下图: 住:这里的f(2)调用f(1)仅代表基本操作的次数. 可以看到多次重复调用,因此效率十分低.进一步,可以算出递归算法…
原则:对修改是封闭的,对扩展是开放的,方法:一般不修改函数或者类,而是扩展函数或者类 一:装饰器 允许我们将一个提供核心功能的对象和其他可以改变这个功能的对象’包裹‘在一起, 使用装饰对象的任何对象与装饰前后该对象的交互遵循完全相同的方式 二:装饰器的用途 (1)增强一个组件向另一个组件发送数据时的响应能力 (2)支持多种可选行为 (3)对一个单元做代码上的修改(即代码的复用) import time # ---------------------------------------------…
1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) total = 1 这种情况也会报错: total = 0 def run(): total += 1 # 等效total = total + 1 原因是函数内部对total有定义后,解释器会认为total是局部变量,但是内部执行时,却发现total还没定义. 解决办法是将total声明为全局变量: to…
装饰器就是闭包函数的一种应用场景 一.为何要用装饰器 开放封闭原则:软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的 也就是说我们必须找到一种解决方案:能够在不修该一个功能源代码以及调用方式的前提下,为其加上新功能 上述总结,原则如下: 1.不修改源代码 2.不修改调用方式 目的: 在遵循1和2原则的基础上扩展新功能 二.什么是装饰器 器指的工具,装饰指的是为被装饰对象添加新功能 完整含义:        装饰器即在不修改被装饰对象源代码与调用方式的前提下,为…
今天学到了python的装饰器,感觉这个东西还是稍微有些复杂,所以记录下来,方便以后的查找.虽然标题是python 3.x的装饰器,但是我也没有怎么用过python 2.x,感觉上应该是和python 2.7在用法上差不多. 现在某个视频公司有一段代码,,代码的主要功能就是看电影. def watchfilm(): print('You are watching film now....') watchfil() 运行之后输出: You are watching film now.... 现在要…