生成器 在函数中使用yield关键字就会将一个普通的函数变成一个生成器(generator),普通的函数只能使用return来退出函数,而不执行return之后的代码.而生成器可以使用调用一个next方法来返回生成器中上一次yield时候的状态.并且可以使用send方法给yield重新赋值.这样就可以灵活的进入和跳出函数.因此在程序中生成器可以中断当前函数,去执行其它的代码,在合适的时候跳回函数继续执行 def yield_test(): print('befor the first') fir…
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域: void main() {     //int num = 10;     if (2 > 1){         int num = 100;     }     printf("%d", num);     getchar(); } //在上面的案例中, printf(&qu…
装饰器 器即函数,装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 装饰器涉及的知识点= 高阶函数+函数嵌套+闭包 在遵循下面两个原则的前提下为被装饰者新功能 必须遵循的原则: 1)一定不能修改源代码 2)不能修改调用方式 语法糖(格式符号):@ @timer #@timer就等同于cal=timer(cal) def cal(array): res=0 for i in array: res+=i return res cal(range(10)) #…
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法. 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据.状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义…
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 要创建一个generator,有很多种…
本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下: locals: 是函数内的名称空间,包括局部变量和形参 globals: 全局变量,函数定义所在模块的名字空间 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的. 作用域即范围 全局范围:全局存活,全局有效 局部范围:临时存活,局部有效 查看作用域方…
带参数的装饰器:就是在原装饰器外再包一层函数 def auth(driver='file'): def auth2(func): def wrapper(*args,**kwargs): name=input("user: ") pwd=input("pwd: ") if driver == 'file': if name == 'egon' and pwd == '123': print('login successful') res=func(*args,**k…
叠加装饰器: 叠加装饰器 - 每一个新的功能都应该写一个新的装饰器 - 否则会导致,代码冗余,结构不清晰,可扩展性差 在同一个被装饰对象中,添加多个装饰器,并执行. @装饰1 @装饰2 @装饰3 def 被装饰对象(): pass 注意: 装饰器在调用被装饰对象时才会执行添加的功能. - 叠加装饰器: - 装饰的顺序: 由下到上装饰 - 执行的顺序: 由上往下 注意: 无论inner中出现任何判断,最后都要返回“调用后的被装饰对象” func(*args, **kwargs) def wrapp…
装饰器 1.速查笔记 #-- 函数装饰器:是它后边的函数的运行时的声明 由@符号以及后边紧跟的"元函数"(metafunction)组成 @staticmethod def smeth(x): print(x) # 等同于: def smeth(x): print(x) smeth = staticmethod(smeth) 定义:在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator) 经典示例: # -*- coding:utf-8 -*- import time…
不了解是否其他语言也有类似 python 装饰器这样的东西. 最近才发现ECMAScript6也是有生成器函数的,也有 yield  generator 装饰器的基础知识是闭包: # 闭包:嵌套函数,内部函数调用外部函数的变量 def outer(): a = 1 def inner(): print(a) # __closure__ 可以用来判断闭包 # print(inner.__closure__) # 打印 cell at ... 则表明它是一个闭包 return inner # 返回内…