第四周总结
异常处理
语法结构
1.基本语法结构
try:
待监测的代码
except 错误类型:
针对上述错误制定的方案
2.查看错误信息
try:
待监测的代码
except 错误类型 as e:
针对上述错误制定的方案
3.针对不同的错误类型制定不同的方案
try:
待监测的代码
except 错误类型1 as e:
针对上述错误制定的方案1
except 错误类型2 as e:
针对上述错误制定的方案2
...
4.万能异常
try:
待监测的代码
except Exceptions as e:
针对各种常见错误类型做统一处理
5.结合else与finally一起使用
try:
待监测的代码
except Exceptions as e:
针对各种常见错误类型做统一处理
else:
try的子代码正常运行没有报错后执行的else子代码
finally:
无论try的子代码是否报错最后都要执行的finally子代码
异常处理关键字
1.assert 判断代码的对错
2.raise 主动抛异常
生成器
生成器对象
1.本质
还是内置有__iter__和__next__方法的迭代器对象
2.生成器对象和迭代器对象的区别
迭代器对象是由解释器提供的,而生成器对象是由程序员自己定义的
3.创建生成器的基本语法
函数体代码中加yield关键字,函数名加括号调用后不是执行函数而是生成一个生成器对象
将函数名加括号以后的结果使用__next__方法才会执行函数体代码,并且每次执行都会停留 在yield位置,下次基于该位置继续执行
4.yield用法
1.函数在执行到该位置时会停留在该位置,下次基于该位置继续执行
2.具有return的功能可以返回返回值
3.冷门用法
def eat(name, food=None):
print(f'{name}准备吃饭')
while True:
food = yield
print(f'{name}想吃{food}')
遇到 food = yield 这种结构时用 send 传值
生成器表达式
l1 = (i for i in range(10))
模块
模块简介
1.本质
具有一定功能或代码的py文件
2.表现形式
1.py文件
2.含有多个py文件的文件夹(包)
模块分类
1.自定义模块
自己写的
2.内置模块
python解释器提供的
3.第三方模块
一些python大佬写的模块文件
导入模块的两种句式
1.句式结构
1.import...句式
2.from...import...句式
2.二者优缺点
import...句式
每次使用模块名称空间中的名字都需要通过模块名点的方式,但不会与模块名称空间中的 名字冲突
from...import...句式
直接使用模块名称空间中的名字,不需要用点的方式,但是容易与执行文件名称空间中的 名字冲突
3.重复导入模块
当我们在同一个执行文件中反复导入同一个模块时,只有第一次导入生效,后续导入不再执行
4.起别名
在导入的模块名或者变量名后面加上 as 起的别名
5.多模块导入
如果模块功能相似度高可以一起导入用逗号隔开,如果模块功能相似度不高则一个一个导入
循环导入问题
1.描述
两个文件彼此使用各自文件名称空间中的名字,极容易报错
2.解决方案
1.尽量避免
2.在引用之前就把名字准备好
判断文件类型
使用__name__
__name__对应的值为__main__,则为执行文件
__name__对应的值为模块名,则为模块文件
模块查找顺序
1.内存
2.内置
3.执行文件所在的sys.path
绝对导入与相对倒入
1.绝对导入
在导入模块名或者是变量名时可以精确到模块名或者是变量名,路径中如果存在多个文件名 时,文件名与文件名之间用点隔开
2.相对导入
路径中的几种符号:
. 表示当前目录
.. 表示上一层目录
..\.. 表示上上一层目录
相对导入只能用在模块文件中,不能用在执行文件中
包
1.描述
多个py文件的集合,也就是文件夹,在python2中只有内部含有__init__.py文件的文件夹才能被称之为包,python3中则无所谓,但是为了兼容性考虑,我们最好还是加上__init__.py
2.使用
1.如果只需要使用包里面的某几个模块,那么按照正常方法就行了
2.如果是直接导入包名,那么其实就是直接导入包下面的__init__.py文件,该文件内有什么名字就可以通过包名点的方式使用什么名字
如果我们想通过包名点的方式调用模块那么需要提前在__init__.py文件中导入模块名
除了可以通过包名点的方式调用模块还可以直接使用绝对路径的方式调用模块
软件开发目录规范
项目文件夹
1.bin文件夹 存放启动文件
start.py 启动文件
2.conf文件夹 存放配置文件
settings.py 存放项目配置
3.core文件夹 存放项目核心文件
src.py 项目核心功能
4.interface文件夹 存放项目接口文件
5.db文件夹 存放项目相关数据
db_handler.py 存放数据库操作相关代码
6.log文件夹 存放项目日志文件
7.lib文件夹 存放项目公共功能
8.raadme文件 项目相关说明
9.requirements.txt 存放项目所需模块及版本
常用内置模块
collecyions模块
1.namedtuple 具名元组
给元组内的数据绑定一个名字,可以直接通过该名字访问到元组内对应的数据
2.deque 双端队列
3.counter 计数器
计算数据集内各个数据的个数并组成字典返回
4.orderdict 有序字典
时间模块
python中时间的三种表现形式
1.时间戳
2.结构化时间
给计算机看的
3.格式化时间
给人看的
time 模块
import time
time.time() # 时间戳
time.localtime() # 结构化时间
time.strftime() # 格式化时间
# 格式化时间的时间格式 年%Y 月%m 日%d 时%H 分%M 秒%S %X时分秒
time.striptime() # 格式化时间转结构化时间
time.sleep() # 程序在此停留指定秒数
datatime模块
from datetime import data, datatime
datetime.now() # 当前时间
datetime.today() # 当前时间
data.today() 当前日期
随机数模块
import random
random.random() # 随机产生一个0-1的小数
random.randint() # 随机产生一个指定范围的整数
random.randrange() # 在range()中随机挑选一个数
random.choice() # 在指定数据集中随机抽取一个数
random.choices() # 与choice作用一样但表现形式不同
random.sample() # 随机抽取指定样本数
random.shuffle() # 随机打乱给定的数据集
os模块
import os
1.创建目录/文件夹
1.os.mkdir() 只能创建单级目录
2.os.makedirs() 单级目录和多级目录都可以创建
2.删除目录/文件夹
1.os.rmdir() # 只能删除空的单级目录
2.os.remocedirs() # 只能删除空的多级目录
3.删除/重命名文件
1.os.remove() # 删除文件
2.os.rename() # 重命名文件
4.列举出指定目录下的内容名称
os.listdir()
5.获取/切换当前工作目录
1.os.getcwd() # 获取当前工作目录
2.os.chdir() # 切换当前工作目录
6.动态获取项目根路径
1.os.path.abspath(__dile__) # 执行文件的绝对路径
2.os.path.dirname(__file__) # 执行文件所在目录路径
7.判断目录/文件是否存在
1.os.path.isfile() # 判断是否是文件
2.os.path.isdir() # 判断是否是目录
8.路径拼接
os.path.join()
sys模块
import sys
1.sys.path 获取执行文件的sys.path
2.sys.getrecursionlimit() 获取python解释器的最大递归深度,括号内填写数字可以修改
3.sys.version 获取解释器版本
json模块
import json
针对数据
1.json.dumps() # 将数据转为json格式
2.json.loads() # 将json格式的数据转为编程语言能够识别的数据类型
针对文件
1.json.dump() # 将数据转为json格式并写入文件
2.json.load() # 从文件中读取json格式的数据并转为编程语言可以识别的数据类型
标签:总结,__,文件,py,导入,模块,四周,os
From: https://www.cnblogs.com/zyg111/p/16819171.html