day 11总结
递归函数
实际开发的时候,能不用递归就不用
1.什么是递归函数
函数中调用函数本身的函数就是递归函数
2.递归的作用:循环能做的事情递归函数都能做
3.怎么写递归函数:f(n)
第一步:确定临界值 - 循环结束的条件,在临界值的地方要让函数结束!
第二步:找关系 - 找当次循环和上次循环的关系;
找f(n)和f(n-1)的关系
第三步: 假设函数f的功能已经实现,通过f(n-1)来实现f(n)的功能
4.循环能做的事情不能使用递归做!
模块
1.什么是模块
在python中一个py文件就是一个模块
a.系统模块(标准库) -- python系统提供的模块
random - 提供随机数
math - 提供数学运算
json - 提供json数据相关操作
re - 提供正则表达式相关操作
socket - 提供python套接字编程相关操作
time - 提供时间相关操作
threading- 提供和线程相关的操作
b.自定义模块-- 程序员自己创建的文件
自己写的模块
别人写的模块 - 第三方库
标准库和第三方库一般是通过模块提供变量,函数,类
2.怎么使用模块
import 模块名 -- 在程序中直接导入指定模块,导入后可以使用模块中所有的全局变量
导入后通过“模块名.变量”来使用模块中的类容
from 模块名 import 变量1,变量2... - 导入指定的模块导入后只能使用import后面的变量,
导入后可以直接使用变量,不用再在前面加模块民.
from 模块民 import *
3.导入模块的实质:
a.不管是使用import还是from import ,导入模块的时候都会执行模块中所有的代码
b.python中一个模块不会重复导入多次,导入的时候系统会自动检查当前模块是否重复导入
4.怎么阻止模块中的类容被其他模块导入
if name == 'main':
函数的调用放在if里面,声明放在外面
将不希望被其他模块执行的代码放在if语句里面
如果希望被其他模块调用的代码就放在if语句外面,
迭代器
1.什么是迭代器(iter)
是python提供的容器性数据类型
获取迭代器元素的时候,只能从前往后一个一个的取,而且取了之后这个元素在迭代器里就不存在爱了
2.字面量
迭代器没有指定格式的字面量,迭代求作为容器,里面的元素只能通过其他序列转换,或者通过生成器生成
3.获取元素
迭代器中的元素只支持查,不支持增删改
迭代器只能通过next方法获取当个元素
通过遍历,获取所有元素
不管哪种方式获取,已经获取过的元素,在迭代器中就不存在了
next(迭代器)---获取迭代器中第一个数据(最顶层)
for in 循环遍历
生成器
1.什么是生成器
生成器就是迭代器,迭代器不一定是生成器。
2.生成器是怎么产生元素的
调用一个带有yield关键字的函数就能得到一个生成器
带yield 的函数:调用的时候不会执行函数体,也不会获取返回值,而是产生一个生成器
这个生成器中的元素就是yield关键字后面的值
3.获取生成器的元素
next() or for in 来获取
生成器获取元素的时候实质就是去执行生成器对应的函数,每次执行到yield为止,
并且会将yield后面的值作为当次获取到的元素
下次获取元素的时候会接着上次结束的位置往后执行,直到下一个yield为止
以此类推,直到函数结束为止。如果执行到函数结束没有遇到yield那么就会报StopIteration错误