1 异常、模块与包
异常就是程序运行的过程中出现了错误。
捕获异常
try:
可能发生错误的代码
except:
如果出现异常执行的代码
""""""
try:
可能要发生异常的语句
except 异常 as 别名:
出现异常的准备手段
else:
未出现异常时应做的事情
finally:
不管出不出现异常都会做的事情
# 基本捕获语法
try:
f = open("D:/abc.txt", "r", encoding="UTF-8")
except:
print("出现异常了,因为文件不存在,我将open的模式,改为w模式去打开")
f = open("D:/abc.txt", "w", encoding="UTF-8")
# 捕获指定的异常
try:
print(name)
# 1 / 0
except NameError as e:
print("出现了变量未定义的异常")
print(e)
# 捕获多个异常
try:
# 1 / 0
print(name)
except (NameError, ZeroDivisionError) as e:
print("出现了变量未定义 或者 除以0的异常错误")
# 未正确设置捕获异常类型,将无法捕获异常
# 捕获所有异常
try:
f = open("D:/123.txt", "r", encoding="UTF-8")
except Exception as e:
print("出现异常了")
f = open("D:/123.txt", "w", encoding="UTF-8")
else:
print("好高兴,没有异常。")
finally:
print("我是finally,有没有异常我都要执行")
f.close()
异常传递
模块
Python 模块(Module),是一个 Python 文件,以.py 结尾。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
# 使用import导入time模块使用sleep功能(函数)
import time # 导入Python内置的time模块(time.py这个代码文件)
print("你好")
time.sleep(5) # 通过. 就可以使用模块内部的全部功能(类、函数、变量)
print("我好")
# 使用from导入time的sleep功能(函数)
from time import sleep
print("你好")
sleep(5)
print("我好")
# 使用 * 导入time模块的全部功能
from time import * # *表示全部的意思
print("你好")
sleep(5)
print("我好")
# 使用as给特定功能加上别名
import time as t
print("你好")
t.sleep(5)
print("我好")
from time import sleep as sl
print("你好")
sl(5)
print("我好")
注意事项:当导入多个模块的时候,且模块内有同名功能.当调用这个同名功能的时候,调用到的是后面导入的模块的功能
包
注意:新建包后,包内部会自动创建init·py文件,这个文件控制着包的导入行为
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
2 综合案例
json是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)
通过json.dumps(data)方法把python数据转化为了json数据data = json. dumps (data)如果有中文可以带上 ensure_ascii = False参数来确保中文正常转换
通过json.loads(data)方法把josn数据转化为了python列表或字典data = json. loads (data)
"""
演示JSON数据和Python字典的相互转换
"""
import json
# 准备列表,列表内每一个元素都是字典,将其转换为JSON
data = [{
"name": "张大山", "age": 11}, {
"name": "王大锤", "age": 13}, {
"name": "赵小虎", "age": 16}]
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))
print(json_str)
# 准备字典,将字典转换为JSON
d = {
"name":"周杰轮", "addr":"台北"}
json_str = json.dumps(d, ensure_ascii=False)
print(type(json_str))
print(json_str)
# 将JSON字符串转换为Python数据类型[{k: v, k: v}, {k: v, k: v}]
s = '[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]'
l = json.loads(s)
print(type(l)