1. 装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的前提下,为被装饰对象添加上新功能 开放封闭原则:对修改封闭,对扩展开放 import time def timmer(fun): start_time=time.time() fun() end_time=time.time() def fun1(): print("in func1")…
装饰器: 定义:本质是函数(装饰其它函数) 为其它函数添加附加功能 原则: 1 不能修改被装饰函数源代码    2 不修改被装饰函数调用方式 实现装饰器知识储备: 1 函数即‘’变量‘’ 2 高阶函数 a 把一个函数名当实参传给另外一个函数(在不修改被装饰函数的情况下 为其添加功能) b 返回值中包含函数名(不修改函数的调用方式) 3嵌套函数 高阶函数 + 嵌套函数 => 装饰器 简单版高阶函数 import time def bar(): time.sleep(3) print('in the…
1.首先是一个很无聊的函数,实现了两个数的加法运算: def f(x,y): print x+y f(2,3) 输出结果也ok 5 2.可是这时候我们感觉输出结果太单一了点,想让代码的输出多一点看起来不这么单调: def showInfo(fun): def wrap(x,y): print "The function before" func(x,y) print "The function after" return wrap def f(x,y): print…
Python学习---装饰器的学习1210 Python学习---生成器的学习1210 Python学习---迭代器学习1210…
1.装饰器 1. 不能修改被装饰的函数的源代码  2. 不能修改被装饰的函数的调用方式 实现装饰器知识储备: 1 函数即“变量” 2 高阶函数     a:把一个函数名当做实参传给另外一个函数(不修改被装饰函数源代码)     b:返回值中包含函数名(不修改函数的调用方式) 3嵌套函数 装饰器 想了很久过两天代码实现 : 列表生成式: a=[i if i<5 else i*i for i in a] 2.生成器 为什么会有这个功能? 答:我们可以使用列表储存数据,可当我们的数据特别大的时候,建立…
python装饰器[1] 首先先明白以下两点 #嵌套函数 def out1(): def inner1(): print(1234) inner1()#当没有加入inner时out()不会打印输出1234,当前层级也就是作用域下必须调用函数才能引用 out1() #函数作用域 def out2(): a = 'aaa' def inner2(): a = 'bbb' print(a) inner2() print(a) out2()#当相同变量处于不同嵌套函数中,会根据作用函数由内而外查找 装饰…
闭包 1, 闭包是嵌套在函数中的 2, 闭包是内层函数对外层函数的变量(非全局变量)的引用(改变) 3,闭包需要将其作为一个对象返回,而且必须逐层返回,直至最外层函数的返回值 闭包例子: def a1(): name = 'wk' def a2(): print(name) return a2 闭包函数的作用 非闭包函数:随着函数的结束临时空间关闭 def func1(s): n = 1 n += s print(n) func1(3) func1(3) #每次函数结束临时空间关闭 func1(…
一 装饰器 1.1 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input('>>: ').strip() if choice in dic: dic[ch…
装饰器: 在编程时,要遵循一个原则,就是开放-封闭原则. 在不破坏原函数的情况下,要想对原函数进行一些修饰,那么这里就要用到装饰器. 例如:你完成了一些用函数写成的项目,此时公司正在年度考核,你需要给你写的每一个函数都加上一个计算时间的功能,随即考核完成后,又需要把函数恢复原状,到了下一阶段考核,可能又要用到这个计算时间功能,一般来说项目中的函数是很多的,怎样才能一次性的为所有函数加上功能呢? 这里就要用到装饰器这个知识点. wahaha()jiaduobao() 此处调用原函数时,可以发现函数…
本篇内容为偷窃的~哈哈,借用一下,我就是放在自己这里好看. 引用地址:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 第一步:最简单的函数,准备附加额外功能 '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print("myfunc() called.") myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 def deco(func):…