day13 模块和异常捕获总结
day13 模块和异常捕获
一、生成器
(一)、什么是生成器
1)容器(是一种可以创建多个数据的容器),生成器中保存的是创建数据的方法,而不是数据本身。
2)特点:
a. 打印生成器无法查看元素
b.不能通过len统计生成器中的元素的个数
c.如果需要生成器中的数据,必须将数据取出来,而且去一个就少一个
c.生成器获取元素的方法和得嗲气获取元素的方式一样
(二)、怎么创建生成器
调用带有yield关键字的函数,就可以得到一个生成器
def func():
yield
print('hello')
(三)、怎么控制生成器中元素的个数和元素的值
执行创建生成器的函数的函数体的时候,会遇到几次yield,对应的生成器就可以创建几个数据,每次遇到yield,yield后面的值就是能创建出来的数据。
二、模块
(一)、什么是模块
python中一个py文件就是一个模块
(二)、怎么在一个模块中使用另外一个模块中的内容
1)前提:如果想要在一个模块中使用另外一个模块中的内容,被使用的模块的模块名必须复合变量名的要求
2)导入模块
a. import 模块名 —— 导入后可以通过‘模块名.xxx’的方式使用这个模块中所有的内容
b.from 模块名 import 内容1,内容2,... —— 导入指定模块,导入后可以直接使用指定内容。
c. from 模块名 import * —— 导入指定模块,导入后可以直接使用模块中所有的内容
d. import 模块名 as 新模块名 —— 导入指定模块后,对模块进行重命名:‘新模块名.xxx’
e. from 模块名 import 内容1 as 新内容1 —— 对导入的内容重命名
导入方式1:
import test
print(test.func1())
print(test.a)
导入方式2:
from test import a, func1
func1()
print(name) # 会报错,因为name模块没有从test模块中导入进来
导入方式3:
from test import *
print(a)
print(name)
func1()
导入方式4:
import test as t1
print(t1.name)
print(t1.a)
t1.func1()
导入方式5:
from test import name as t_name
print(t_name) # 小明
from test import a as t_a
print(t_a) # 100
from test import func1 as t_func1
t_func1() # 你好,世界!
三、包
(一)、什么是包
包含_ _init_ _.py文件的文件夹就是包
(二)、怎么使用包或者文件夹中的模块中的内容
1)import 包名 —— (只适用于包)导入指定的包,导入后可以通过‘包名.xxx’去使用__init__.py文件中所有的内容
2)from 包名 import 模块名1,模块名2,模块名3,... —— (同时适用于包和普通文件夹)导入指定包中指定的模块,导入后可以通过‘模块名.xxx’来使用模块中的内容
3)from 包名 import 内容1,内容2,... —— (只适用于包)导入指定包中__init__.py文件中的指定内容
4)import 包名.模块名 —— (同时适用于包和普通文件夹)
5)from 包名.模块名 import 内容1,内容2,... —— (同时适用于包和普通文件夹)
导入方式1:
import files2
导入方式2:
from files1 import abc
导入方式3:
from files2 import age
导入方式4:
import files1.abc
导入方式5:
from files1.abc import xjh
注:以上几种方式设计的文件和模块都是在pycharm中创建好了的包或者文件
四、异常捕获
(一)、异常 —— 程序中的错误
程序出现异常(报错)会直接让程序结束运行,在哪个位置出现的异常,程序就会在哪个位置结束
(二)、异常捕获 —— 让程序在出现异常的时候程序不结束,还可以接着往后执行
1)语法结构1 —— 捕获所有异常
try:
代码段1 —— 需要捕获异常的代码
except:
代码段2 —— 出现异常后立刻执行的代码
finally:
代码段3 —— 最后无论如何都会执行的代码
执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2,如果出现异常,程序不会报错,并且马上执行代码段2
try:
age = int(input('请输入你的年龄:'))
except:
print('年龄输入有误')
2)语法结构(推荐使用) —— 捕获指定类型的异常
try:
代码段1 —— 需要捕获异常的代码
except 异常类型:
代码段2 —— 出现异常后立刻执行的代码
finally:
代码段3 —— 最后无论如何都会执行的代码
3)语法结构3 —— 同时捕获多种异常
try:
代码段1 —— 需要捕获异常的代码
except (异常类型1,异常类型2,...)
代码段2 —— 出现异常后立刻执行的代码
finally:
代码段3 —— 最后无论如何都会执行的代码
4)语法结构 —— 同时捕获多种异常
try:
代码段1
except 异常类型1:
代码段11
except (异常类型2,异常类型22,...):
代码段22
except 异常类型3:
代码段33
finally:
代码段3 —— 最后无论如何都会执行的代码
...