上周回顾
1.装饰器(基础阶段难点)
在遵循开闭原则的前提下,给一个新函数添加新功能的函数
开闭原则(对扩展开放,对修改封闭,不能修改源代码和调用方式)
装饰器是通过闭包函数实现的
闭包:一个函数嵌套定义在另一个函数内部,并且内部函数访问了外部函数的名字 再将内部函数作为返回值返回给外界
2.迭代器
解释for循环的执行原理
是一种通用的取值方式
什么都是迭代器
具备__next___和__iter__方法
什么是可迭代对象
可以被迭代器取值的对象
具备__iter__方法
3.生成器
生成器本质是一个函数,只不过是里面要有yield关键字
4.列表生成式
快速生成一个列表
[表达式 for i in 可迭代 if 条件]
5.生成器表达式
快速创建一个列表
(表达式 for i in 可迭代 if 条件)
得到一个生成器
6.三元表达式
有三个元素的表达式 a b(条件) c
作用 简化只是两个分支的if else 的书写 要求无论判断成立或不成立都有返回值
7.递归(二分法)
函数执行过程中 直接或者间接调用了本身
递归也是一个循环的过程并且递归在循环调用时 每次调用都会产生名称空间 可能会造成内存溢出
8.匿名函数
没有名字的函数,只在定义的时候临时有效,用完就没了 一般与内置函数一起用
9.内置函数
max min reduce sorted map filter
10.模块
是一堆功能的集合体
import
1.创建名称空间
2.执行内部代码,把名字放到名称空间中
3.在导入模块的地方生产一个名字指向名称空间
from
1.创建名称空间
2.执行内部代码,把名字放到名称空间中
3.直接将被导入的名字放入当前名称空间中
as(别名) 一行导入的多个 *号导入所有文件