内容回顾

常见内置函数

asb() 求绝对值
all() 所有数据值为Ture的时候 才是Ture
any() 所有数据值有一个为Ture 结果就是Ture
bin() 将十进制转换成二进制 0b开头是二进制
oct() 将十进制转换成八进制 0o开头是八进制
hex() 将十进制转换成十六进制 0x开头是十六进制
int() 数据转换 将其他进制转换成十进制
bytes() 字符串转换成字节类型 针对编码与解码
callable() 判断某个变量是否可以加括号调用
chr() 依据ASCII码表实现字符与数据的转换 数字返回字符
ord() 依据ASCII码表实现字符与数据的转换 字符返回数字
dir() 获取对象内部可以通过句点符获取的数据
divmod() 获取整除之后的整数和余数
enumerate() 枚举
eval() 识别最简单代码 
exec() 识别复杂代码
hash() 哈希算法
help() 查看帮助信息
isinstance() 判断某个数据是否属于某个数据类型
pop() 幂指数
round() 四舍五入

可迭代对象

1.如何理解迭代
	迭代就是更新换代 每次迭代都需要基于上一次的成果 就想手机上的软件更新换代 更新迭代
	手机上的软件更新专业名词>>>:软件版本迭代
2.代码演示
	count = 0
	while count < 5:
      print(count)
      count += 1
每次都是基于count加1得来的结果 就属于是迭代器
3.如何判断迭代器对象
	可以把对象当成我们要研究的目标 研究谁就把谁当成对象
    
可迭代对象有
	字符串 列表 字典 元组 集合 文件对象(本身就是迭代器对象)
不是迭代器对象有
	整型 浮点型 布尔值 函数名
"""
内置有__iter__方法的都叫可迭代对象
	内置是什么意思 就是通过句点符点出来的东西都叫内置
	__xxx__ 针对双下划线开头双下划线结尾的方法 官方统一读作双下xxx
"""

迭代器对象

迭代器对象给我们提供了一种不依赖索引取值的方式
正是因为迭代器的存在 我们才能对字典 集合 这些无序的类型循环取值
为啥能够for循环字典 集合 不是本身就能获取 而是因为里面用了迭代器对象
1.如何判断迭代器对象
	内置__iter__和__next__方法的都叫迭代器对象
 
2.迭代器对象迭代取值
	可迭代对象调用__iter__方法就会变成迭代器对象
	迭代器对象调用__iter__方法无论多少次还是迭代器对象本身

for循环本质

语法结构
	for 变量名 in 可迭代对象:
	for循环代码体
1.for会自动将in后面的数据调用__iter__变成迭代器对象
2.之后每次循环调用__next__()取值
3.最后没有值__next__会报错 for能自动处理该错误 让循环正常结束

具体请查看7.11常见内置函数

异常捕获

1.如何理解异常
	程序在运行中如果出现了错误会导致整个程序崩溃
	异常通常是程序员们口中的bug
eg:
File "D:/Users/Lisony/day24/json模块的实操.py", line 23
    with open(file_path, 'a', encoding='utf8')as f
                                                 ^
SyntaxError: invalid syntax
2.异常的结构
	2.1.关键字line所在行
		能够精准的提示你错误在那一行
	2.2.最后一行冒号左侧
		错误类型的提示
	2.3.最后一行冒号右侧
		错误的具体原因 修改bug的关键
3.异常的类型
	NameError 名字有错误
	IndexError 索引有错误
	KeyError  键有问题
	SyntaxError 语法错误
	TypeError 数据类型错误
4.异常分类
	1.语法错误 是不允许出现的 一旦出现请马上修改
	2.逻辑错误 允许出现  允许出错之后修改即可

异常捕获的实操

1.什么时候需要使用自己写代码异常处理
	当不知道什么时候代码会出错的情况下
	eg: 编写网络爬虫访问网址数据并处理 有可能会出现断网的情况下数据没有处理
2.异常捕获使用相当于提前预测可能会出现的问题 提前做好预防措施
3.异常捕获的代码实现
	3.1.语法结构
	try:
        可能会出现错误的代码
	except 错误类型 as e:
        对应出现类型的解决措施
        
	3.2.万能异常 不确定是什么类型的时候使用
	两个关键字:Exception BaseException # 作用一致

生成器对象

1.本质其实就是迭代器对象
	只不过迭代器是python解释器自带的 提供现成的给我们用
	生成器是需要我们自己定义出来的
	__iter__和__next__
    
2.学习生成器对象的目的是为了优化代码 减少内存占用
	一种不依赖于索引取值的通用方式
	可以节省数据类型的内存占用(主要)
    
3.生成器对象代码实现

生成表达式

生成表达式就是为了更好节省内存
    l1 = [i*2 for i in range(10) if i > 3] # 列表生成式(方括号)
    l1 = (i*2 for i in range(10) if i > 3) # 生成表达式(小括号)

详细请查看7.12异常捕获

迭代取值与索引取值差异

1.索引取值
	优势:可以随时反复的的取值
	劣势:对无序的容器类型无法取值

2.迭代取值
	优势:提供了一种通用的取值方式
	劣势:取值只能往前不能退后

模块简介

1.模块可以看成是一系列功能的结合体
	使用模块就相当于拥有了模块这个结合体内所有的功能
    
2.模块分类
	2.1.内置模块
		解释器自带的 可以直接使用的模块
	2.2.自定义模块
		自己写的模块
	2.3.第三方模块
3.模块四种形式
	1.py文件 使用python编写的文件也可以称之为模块文件
	2.含有多个py文件的文件夹(按照模块功能的不同存储入不同的文件夹)
	3.已被编译为共享库DLL的C或C++扩展
	4.使用C编写并链接到python解释器的内置模块

导入模块两种语法句式与优缺点

导入模块句式一 import
import module
1.会产出执行文件的名称空间
2.产出被导入的文件的名称空间并运行该文件内所有的代码(存储名字)
3.在执行文件中会获取到被导入模块的名字 通过该名字点的方式可以使用到被导入文件名称空间中的名字
4.之后的导入 都是直接引用第一次产生的module.py的名字 不会重复执行代码
import module  # 有效
import module  # 无效

import module
	优点:通过mudole点的方式可以使用到模块内所有的名字 并且肯定不会与当前名称空间的名字冲突
	缺点:module通过点的方式能用到模块内所有东西 有时候并不是所有的名字都能被使用
        
导入模块的句式二 from ... import ...
1.创建执行文件的名称空间
2.创建被导入的名称空间
3.执行被导入文件中的代码 将产生的名字储存到被导入文件的名称空间中
4.在执行文件中获取到指定的名字 指向被导入的名称空间 执行文件通过点的方式使用被导入指定名字

from module import money
	优点:指名道姓的使用指定的名字 并且不需要加模块名的前缀
	缺点:名字容易与当前名称空间冲突 (绑定关系被修改)

补充知识

1.起别名
	情况1:多个模块文件相同(多个人写)
	情况2:原有模块名字比较复杂
2.导入多个名字
3.全导入

模块顺序的查找

1.先去内存中查找
2.再去内置中查找
3.再去sys.path中查找(程序系统的环境变量)

具体查看7.13模块简介

相对导入与绝对导入

只要涉及到模块的导入,那么sys.path永远以执行文件为准
绝对导入:
	其实就是以执行文件所在的sys.path一层层往下找
	模块中导模块绝对导入
	from aaa import modu2
ps:由于pycharm会最自动将项目目录添加到sys.path中所有查找模块肯定不报错的方法就是永久根据路劲一层层往下找
	如果不是pycharm运行 则需要将项目跟目录添加到sys.path

相对导入
	储备知识
		.在路劲中是当前路劲
		..在路劲中是上一层路劲
		../..在路劲中上上一层路劲
	相对导入可以不参考执行文件所在路劲 直接以当前模块文件路径为准
	1.只能在模块文件中使用 不能在执行文件中使用
	2.相对导入在项目比较复杂的情况下 可能会出错

软件开发目录规范

1.bin文件夹
	储存程序的启动文件代码  start.py
2.conf文件夹
	储存程序的固定信息配置文件  settings.py
3.core文件夹
	储存程序的核心业务逻辑代码  src.py	
4.lib文件夹
	储存程序的共享功能  common.py
5.db文件夹
	储存程序的数据文件  userinfo.txt
6.log文件夹
	储存程序的日志文件  log.log
7.readme文件夹(文本文件)
	用于程序的说明、软件使用的规范  readme.txt
8.interface文件夹
	储存程序的接口文件  user.py order.py goods.py
9.requirements.txt文件
	储存程序所需的第三方模块名称和版本

collections模块

1.具名元组
2.有效字典
3.双端队列
4.计数器

time时间模块

1.时间戳
2.结构化时间
3.格式化时间
 posted on 2022-07-17 21:35  Joker_Ly  阅读(16)  评论(0编辑  收藏  举报