第九章 异常、模块、包
异常
捕获异常
捕获常规异常
# 捕获常规异常
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)
except NameError as e:print(e)
未正确设置捕获异常类型,将无法捕获异常
try:print(name)
except ZeroDivisionError as e:print(e)
捕获多个异常
try:1 / 0print(name)
except (NameError, ZeroDivisionError) as e:print("出现了变量未定义 或者 除以0的异常错误")
捕获所有异常
# 捕获所有异常
try:f = open("D:/abc.txt", "r")
except Exception as e:print(e)
异常else
else表示的是如果没有异常要执行的代码。
try:print("Hello")
except Exception as e:print("出现异常了")
else:print("好高兴,没有异常")
Hello
好高兴,没有异常
异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件。
try:f = open("D:/abc.txt", "r")
except Exception as e:print("出现异常了")f = open("D:/abc.txt", "w")
else:print("好高兴,没有异常")
finally:print("我是finally,有没有异常我都要执行")f.close()
异常的传递性
# 定义一个出现异常的方法
def func1():print("func1 开始执行")num = 1 / 0print("func1 结束执行")# 定义一个无异常的方法,调用上面的方法
def func2():print("func2 开始执行")func1()print("func2 结束执行")# 定义一个方法,调用上面的方法
def main():func2()main()
模块
概念
Python 模块(Module),是一个 Python 文件,以 .py 结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。
作用
每一个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块,我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。
导入方式
模块的导入一般写在代码文件的开头位置
import模块名
# 导入时间模块
import timeprint("开始")
# 让程序睡眠3秒(阻塞)
time.sleep(3)
print("结束")
开始
# 3秒后
结束
from 模块名 import 功能名
# 导入时间模块中的sleep功能
from time import sleepprint("开始")
# 让程序睡眠3秒(阻塞)
sleep(3)
print("结束")
开始
# 3秒后
结束
from 模块名 import *
# 导入时间模块中的所有功能
from time import*print("开始")
# 让程序睡眠3秒(阻塞)
sleep(3)
print("结束")
开始
# 3秒后
结束
as定义别名
# 功能别名
from time import sleep as ttprint("开始")
# 让程序睡眠3秒(阻塞)
tt(3)
print("结束")
开始
# 3秒后
结束
# 模块别名
import time as ttprint("开始")
# 让程序睡眠3秒(阻塞)
tt.sleep(3)
print("结束")
开始
# 3秒后
结束
自定义模块
第十章 数据可视化
导学
json
定义
(1)JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
(2)JSON本质上是一个带有特定格式的字符串。
功能
json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。类似于
python数据和json数据的相互转化
python和json格式是可以无缝切换的,也就是说json说白了,就是一个python的列表(或者说是字典)
若为列表:要求列表内部
若为字典:没什么要求
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))
print(l)# 将json字符串转换为python数据类型{k: v, k: v}
s = '{"name": "周杰伦", "addr": "台北"}'
d = json.loads(s)
print(type(d))
print(d)
<type 'str'>
[{"age": 11, "name": "张大山"}, {"age": 13, "name": "王大锤"}, {"age": 16, "name": "赵小虎"}]
<type 'str'>
{"name": "周杰伦", "addr": "台北"}
<type 'list'>
[{u'age': 11, u'name': u'\u5f20\u5927\u5c71'}, {u'age': 13, u'name': u'\u738b\u5927\u9524'}, {u'age': 16, u'name': u'\u8d75\u5c0f\u864e'}]
<type 'dict'>
{u'name': u'\u5468\u6770\u4f26', u'addr': u'\u53f0\u5317'}