w4
本周内容回顾
异常的处理
https://www.cnblogs.com/xiaochenxiangchangpang/p/16799463.html
常见的异常
#syntaxerrior
语法错误
#Nameerror
变量名没有经过赋值就直接使用
#Indexerror
索引值超出了范围
#keyerror
所取的键不在字典中
#Indentionerror
缩进的问题
异常处理的语法结构
try:
待检测的代码
except 错误类型 as e: #(e是系统提示的错误信息)
针对错误类型的解决方案
#注意
一个错误类型只能抓一个异常
当待检测代码中出现多个异常而我们没有给出对应的解决方案执行还是会报错
在使用单个异常检测时只能检测到待检测的代码中的第一个异常 后续不做处理
所以我们要尽量少一点try后的待检测代码的数量
#万能错误
try:
待检测的代码
except Exception/BaseException(一般用第一个) as e:
针对所有错误解决方案
#补充用法
else:
待检测的代码没有出现异常的情况下所执行的代码
finally:
无论代码出不出现异常最后都会执行的代码
异常处理的补充
#断言
name = 'xiaochen'
assert isinstance(name,str)
print('是字符串')
可以理解为打赌 赌这个name的数据类型 是字符串自会接着走 但如果不是字符串则会报错
#主动抛出异常
name = 'xiaochen'
if name == 'xiaochen'
raise Exception('报错信息')
else:
pass
如果name是xiaochen则会直接报错
异常处理的实战应用
#使用wihile循环来实现for循环
l1=[1,2,3,4,5]
a = l1.__lite__() #将l1变成一个可迭代对象
while True:
try:
print(a.__next__()) #使用(__next__())来遍历数据
except Exception as e:
pass
#当__next__()无法取到值时会报错我们可以捕捉这个报错 完成for循环的功能
使用while循环来实现range
1.一个参数

2.两个参数

3.三个参数

生成器对象
#1.本质
内置函数__init__和__next__的迭代器对象
#2.区别
迭代器对象是解释器提供的
数据类型\文件对象>>>:迭代器对象
生成器对象是程序员自定义编写出来的
关键字>>>:迭代器对象(生成器)
#3.创造生成器的基本语法
函数体代码中有yield关键字
def func():
print('111')
yield
'''
当函数体代码中有yield函数加括号名就会产生一个生成器对象
'''
yield冷门用法
yield 和 return一样可以获取一个返回值
不同的是 yield可以停止函数的运行而 return是直接结束函数的运行
生成器表达式

索引取值与迭代取值的区别
https://www.cnblogs.com/xiaochenxiangchangpang/p/16803247.html
#索引取值
可以反复调用
不支持无序的数据类型
#迭代取值
只能从前往后的取值
支持所有数据类型
模块的介绍
#本质
内部含有一定的功能的py文件
#模块的表达形式
1.py文件
2.内部含有多个py文件的文件夹
3.已被编译为共享库或Dll的c或c++拓展
4.使用c编写并链接到python解释器的内置模板
模块的分类
#1.自定义模块
程序员所编写的
#2.内置模块
python解释器所提供的
#3.第三方模块
他人写出来提供别人使用上传出来的
导入模块的两种语句
'''
在使用时要注意区分导入模块文件和执行文件
模块的取名一般使用纯英文
'''
import句式
'''
1.先产生执行文件的名称空间
2.执行被导入文件的名字被放到被导入文件的名称空间
3.在执行文件的名称空间中产生一个模块的名字
4.在执行文件中使用模块加点的方式使用模块名称空间的名字
'''
from...impirt...句式
'''
1.产生执行文件的名称空间
2.执行被导入文件的名字放到被导入文件的名称空间
3.在执行文件的名称空间中绑定被导入名称空间中对应的名字
4.在执行文件中直接使用名字就可以访问到模块空间的名字
'''
导入模块的补充说明
#1.两种导入方式都有优缺点
import
使用模块加点 不容易混淆 也不易被执行文件中的名字给代替
from import
直接使用 不需要加点就可以使用 容易和执行文件的名字起冲突
#2.重复导入
在同一个文件中只需要导入一次模块就可以使用 如果重复导入也不会有什么影响
#3.起别名
在使用import句式时如果模块名太长可以使用起别名
#4.涉及多个模块导入
import a,b
import a
import b
如果a,b两模块功能接近可以考虑放到一起 如果不接近推荐使用分开写的方式
循环导入问题
#1.循环导入
到两个文件之间相互导入极容易出错 所以不推荐使用
#2.解决方案
确保在名字在使用前就已经准备好了
判断文件的文件类型
在文件内打印__name__
如果是执行文件打印的结果就是__main__
如果是模块文件打印的结果就是模块名
if __name__=='__main__':
代码
该脚本适用与模块文件的测试 只有在文件是执行文件才会起作用
模块的查找顺序
#内存>>>内置>>>执行文件的环境变量sys.path
绝对导入和相对导入
#绝对导入
from aaa.bbb.ccc import name
从上至下一层层导入
#相对导入
from . import b
相对与执行文件的上一层寻找模块b
包
https://www.cnblogs.com/xiaochenxiangchangpang/p/16807036.html
#简介
装有多个py文件的集合(文件夹)
在制作包时最好添加一个__init__虽然pyrhon3中可以不用但为了考虑兼容性最好加上
#如果只是想用包中的几个文件可以套用之前的导入方式
#如果直接导入包名
import aaa(假设aaa为一个包)
就是导入__init__.py文件 该文件下有什么名字我们都可以点出来使用
编程思想的转变
#1.面条式阶段
所有代码推在一起一个一个写下去
#2.函数阶段
将代码封装成函数
#3.模块阶段
根据不同的代码的功能将其划分到不同的文件里
'''
不断优化就是为了实现资源的高效管理
'''
软件开发目录规范
1.bin文件 存放项目启动文件
start.py
2.conf文件 存放项目配置文件
settings.py
3.core文件 存放项目核心文件
src.py
4.interface文件 存放项目接口文件
goods.py
user.py
account.py
5.db文件 存放项目相关数据
userinfo.py
db_handler.py
6.log文件 存放项目日志
log.log
7.lib文件 存放项目的公共功能
common.py
8.readme文件 类似于说明书
9.requirements.txt文件 存放项目所需的配置,所需模块以及版本
常用内置函数
collections模块
#1.具名元组 namedtuple
from collections import namedtupel
'''
可用于表达二维坐标系
print = naemdtuple('点',['x','y'])
生成点的信息
p1 = point(1,2)
print(p1)
print(p1,x)只获取x坐标
print(p1,y)只获取y坐标
'''
#队列和堆栈
队列:先进先出
堆栈:先进后出
两个都时单边输入 只能一边进一边出
时间模块
import time
三种时间的表达形式
'''
1.时间戳
2.结构化时间
3.格式化
'''
#多种用法
1.time.time
2.time.localtime 获取当前时间(结构化)
3.time.strfitime 获取当前时间(格式化)
详细看:
https://www.cnblogs.com/xiaochenxiangchangpang/p/16807036.html
随机数模块
import random
1.random.random() 随机产生0到1之间的小数
2.random.randint() 随机产生a到b之间的数字
3.random.randrange() 随机产生指定的数字 可输入第三个数字来作为公差
4.random.choice() 随机获取一个字符串 +s 保留当前形式获取
5.random.shuffle() 打乱顺序 通常用于列表
os模块
主要与代码运行的操作系统打交道
1.os.mkdir 创造单级目录
2.os.mkdirs 创造多级目录
3.os.rmdir 删除单层目录(只删空的)
4.os.removedirs 删除多层目录(空的)
5.os.listdir 获取当前目录下所有文件的名字
6.os.rename 将a改成名字b 重名名
7.os.remove 删除文件
8.os.getcd 获取当前目录
9.os.chdir 切换目录
10.os.path.adspath(__fine__) 获取当前的绝对路径
11.os.path.dirname(__fine__) 获取当前的目录路径
12.os.path.exists() 判断是否存在该文件
13.os.path.isfile 判断路径是否为文件
14.os.path.join 路劲的拼接
15.os.path.getsize 获取文件字节数
sys模块
import sys
1.sys.path 获取当前执行文件的环境变量
2.sys.getrecursionlimit 获取python解释器最大递归深度
3.sys.version 获取当前解释器的版本
4.sys.platform 获取平台信息
json模块
#json 模块也称序列化模快 序列化可以打破语言限制实现不同编程语言之间的数据交互
#json数据格式化
只要是双引号的数据都是json数据类型
json的数据类型相关操作
#针对数据
json.dumps()
json.loads()
#针对文件
json.dump()
json.load()
json实战
https://www.cnblogs.com/xiaochenxiangchangpang/p/16810434.html

浙公网安备 33010602011771号