问题: 定义了一个新函数 想在运行时动态增加功能 又不想改动函数本身的代码 通过高阶段函数返回一个新函数 装饰器 python内置的@语法就是为了简化装饰器 类似上述的方法2 装饰器的作用 可以极大的简化代码,避免每个函数编写重复性代码 打印日志:@log 检测性能:@performance 数据库 ...
分类:
编程语言 时间:
2017-05-17 00:53:52
阅读次数:
240
写了个函数作为装饰器为Fibonacci数列做缓存,做了一下性能比较。 [python] view plain copy #!/usr/bin/python # coding: UTF-8 import datetime now = datetime.datetime.now from functo ...
分类:
其他好文 时间:
2017-05-16 16:42:15
阅读次数:
112
继承 当我们定义完成某个类时,可以再定义一个新类,新类可以继承第一个类。新类被称为子类,而被继承的类称为父类/基类/超类。 继承就是子类继承父类的属性和方法(注意是类属性和类方法)。 继承可以使子类使用父类中的方法,也可以在子类中新定义某个方法,或者在子类中覆盖父类的方法。 来看一个实例: clas ...
分类:
编程语言 时间:
2017-05-16 13:05:23
阅读次数:
167
本篇内容:1.装饰器2.列表生成式与生成器3.可迭代对象与迭代器4.Python内建函数一、装饰器1.装饰器的介绍装饰器本质是函数,它是为其它函数添加附加功能(装饰其它函数)。装饰器遵循的原则有:●不能修改被装饰函数的源代码;●不能修改被装饰函数的调用方式;●不能修改被装..
分类:
编程语言 时间:
2017-05-15 22:32:31
阅读次数:
243
装饰器 一.装饰器的意义 比如:以下函数是供我们调用的,但是我们需要在每个函数中都添加同一个功能,该如何做到呢? 方法一:在每个函数中都加上新加的功能代码块 方法二:使用函数式编程,将需要添加的部分写成一个函数 方法三:前两种方法都没有遵守我们的开放封闭原则,对于函数内部,我们一般不允许修改。所以我 ...
分类:
编程语言 时间:
2017-05-14 17:05:06
阅读次数:
262
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 函数对象有一个__name__属性,可以拿到函数的名字: 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“ ...
分类:
编程语言 时间:
2017-05-14 10:56:30
阅读次数:
185
装饰器前奏: 装饰器变形: (1)第一种变形 (2)第二种变形 (3)第三种变形 (4)第四种变形(正确且标准得装饰器) 装饰器装饰带有参数的函数: 带标志位的装饰器: 应用场景:例如装饰器是为了测试代码运行时间,但是生产环境上线是需要去掉多余得功能,这时候可以把装饰器标志位改为False即可,避免 ...
分类:
其他好文 时间:
2017-05-14 10:27:25
阅读次数:
109
开始第二模块的学习: 装饰器 : 描述: 装饰器原则: 1、不能修改被装饰的函数的源代码 2、不能修改装饰的函数的调用方试 实现装饰器的需要: 高阶函数+嵌套函数=装饰器 高阶函数: 类型I:将函数做为实参的函数,可以称为高阶函数 类型II:返回值中包含函数名的函数,也可以称为高阶函数 嵌套函数: ...
分类:
编程语言 时间:
2017-05-14 01:05:39
阅读次数:
203
看《Python cookbook》的时候,第9.5部分,“定义一个属性可由用户修改的装饰器”,有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代码:https://github.com/blackmatrix7/python-learning/blob/master/pyth ...
分类:
编程语言 时间:
2017-05-14 01:02:28
阅读次数:
227
装饰器decorator (“器”代表的是函数) 定义:本质是函数 作用:用来装饰其他函数 in other words,为其他函数添加附加功能 (eg. 假如程序已上线,如果想新增功能,但是又不能改源代码) 原则: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方试 组成:高阶函 ...
分类:
编程语言 时间:
2017-05-13 14:21:31
阅读次数:
267