装饰器 本质:是函数,用来装饰其他函数,也就是为其他函数添加附加功能. 使用情景 1.不能修改被装饰的函数的源代码:        2.不能修改被装饰的函数的调用方式. 在这两种条件下,为函数添加附加功能,就可以使用装饰器. 装饰器的实现 装饰器的实现:高阶函数+嵌套函数 =>装饰器 1.函数即“变量”(匿名函数除外,没有函数名) def定义一个函数f,相当于变量 f 指向函数f的函数体(函数体保存在内存中)         2.高阶函数           把一个函数名当做实参传给另外一个函数…
目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: >不能修改被装饰的函数的源代码 >不能修改被装饰的函数的调用方式 实现装饰器知识储备: >函数即“变量” >高阶函数 a)把一个函数名当做实参传给另外一个函数(在不修改源代码的请情况下) b)返回值中包含函数名(不修改函数的调用方式) >嵌套函数 高阶函数+嵌套函数=>装…
本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 先定义一个基本的装饰器: ########## 基本装饰器 ########## def orter(func): #定义装饰器 def inner…
1. 函数嵌套 1.1 函数嵌套调用 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数 def bar(): print("from in the bar.") def foo(): print("from in the foo.") bar() foo() 1.2 求函数最大值 def max2(x,y): if x > y: return x else: return y def max4(a,b,c,d): res1 = max2(a,b) re…
文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  装饰器 : 定义: 装饰器 本质是函数,功能是装饰其他函数,就是为其他函数添加附加功能. 原则: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 看以下 [root@localhost day4]# cat decorator.py #!/usr/bin/env python3 import time def timmer(func): #装饰器. 其实编写当时和写函数 是一样的 def…
1装饰器 1.1基本结构 def 外层函数(参数): def 内层函数(*args,**kwargs); return 参数(*args,**kwargs) return 内层函数 @外层函数 def index() pass #示例: def func(arg): def inner(): v = arg() return v return inner @func def index(): print(123) return 666 print(index) @func :执行func函数把下…
一.装饰器 由于一个函数能实现一种功能,现在想要在不改变其代码的情况下,让这个函数进化一下,即能保持原来的功能,还能有新的"技能",怎么办? 现已经存在一个自定义的函数func1, def func1(): print('hello,world!') 让func1进化一下:(继承func1之前的所有功能,而且还有新的‘技能’) 效果和下面定义的函数func2效果是一样的 def func2(): func1() #调用func1,即可保持func1这一函数的所有的功能都被这个新的函数继…
1.装饰器 定义:本质是一个函数,(装饰其他函数)就是为其他函数添加附加功能 原则:不能修改被装饰函数的源代码,不能修改被装饰函数的调用方式 实现装饰器的知识储备: 函数即“变量”.每当定义一个函数时,函数的名字就是变量的名字,函数体就是变量的内容 ''' error def foo(): print("in the foo") bar() foo() '''''' OK def bar(): print("in the bar") def foo(): print…
一.叠加多个装饰器二.迭代器三.自定义迭代器四.xxx生成式 一.叠加多个装饰器 # 加载装饰器就是将原函数名偷梁换柱成了装饰器最内层那个wrapper函数 # 在加载完毕后,调用原函数其实就是在调用wrapper函数 # 当一个被装饰的对象同时叠加多个装饰器时 # 装饰器的加载顺序是:自下而上 # 装饰器内wrapper函数的执行顺序是:自上而下 ''' import time def timmer(func): #func=wrapper2的内存地址 def wrapper1(*args,…
开放封闭原则:不改变调用方式与源代码上增加功能 ''' 1.不能修改被装饰对象(函数)的源代码(封闭) 2.不能更改被修饰对象(函数)的调用方式,且能达到增加功能的效果(开放) ''' 装饰器 # 把要被装饰的函数作为外层函数的参数通过闭包操作后返回一个替代版函数 # 被装饰的函数:fn # 外层函数:outer(func) outer(fn) => func = fn # 替代版函数: return inner: 原功能+新功能 def fn(): print("原有功能")…