包含一系列数据、函数、类的文件,通常以.py结尾。
1.1.2 作用让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。
有利于多人合作开发。
1.1.3 导入1.1.3.1 import(1) 语法:
import 模块名
import 模块名 as 别名
(2) 作用:将模块整体导入到当前模块中
(3) 使用:模块名.成员
1.1.3.2 from import(1) 语法:
from 模块名 import 成员名
from 模块名 import 成员名 as 别名
from 模块名 import *
(2) 作用:将模块内的成员导入到当前模块作用域中
(3) 使用:直接使用成员名
练习:
(1) 根据下列结构,创建包与模块。
my_project02/
main.pycommon/ __init__.py list_helper.pyskill_system/ __init__.py skill_manager.py
(2) 通过导入包的方式,在main.py中调用skill_manager.py中实例方法。
(3) 通过导入包的方式,在skill_manager.py中调用list_helper.py中类方法。
2 异常处理Error2.1 异常(1) 定义:运行时检测到的错误。
(2) 现象:当异常发生时,程序不会再向下执行,而转到函数的调用语句。
(3) 常见异常类型:
-- 名称异常(NameError):变量未定义。
-- 类型异常(TypeError):不同类型数据进行运算。
-- 索引异常(IndexError):超出索引范围。
-- 属性异常(AttributeError):对象没有对应名称的属性。
-- 键异常(KeyError):没有对应名称的键。
-- 异常基类Exception。
2.2 处理(1) 语法:
try: 可能触发异常的语句except 错误类型1 [as 变量1]: 处理语句1except 错误类型2 [as 变量2]: 处理语句2except Exception [as 变量3]: 不是以上错误类型的处理语句else: 未发生异常的语句finally: 无论是否发生异常的语句
(2) 作用:将程序由异常状态转为正常流程。
(3) 说明:
as 子句是用于绑定错误对象的变量,可以省略
except子句可以有一个或多个,用来捕获某种类型的错误。
else子句最多只能有一个。
finally子句最多只能有一个,如果没有except子句,必须存在。
如果异常没有被捕获到,会向上层(调用处)继续传递,直到程序终止运行。
练习:创建函数,在终端中录入int类型成绩。如果格式不正确,重新输入。
效果: score = get_score()
print("成绩是:%d"%score)
2.3 raise 语句(1) 作用:抛出一个错误,让程序进入异常状态。
(2) 目的:在程序调用层数较深时,向主调函数传递错误信息要层层return比较麻烦,所以人为抛出异常,可以直接传递错误信息。
class Wife: def __init__(self, age): self.age = age @property def age(self): return self.__age @age.setter def age(self, value): if 20 <= value <= 60: self.__age = value else: # 创建异常 -- 抛出 错误信息 raise Exception("我不要","if 20 <= value <= 60",1001)# -- 接收 错误信息while True: try: age = int(input("请输入你老婆年龄:")) w01 = Wife(age) break except Exception as e: print(e.args) # ('我不要', 'if 30 <= value <= 60', 1001)
3 迭代每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。
3.1 可迭代对象iterable(1) 定义:具有__iter__函数的对象,可以返回迭代器对象。
(2) 语法
# 创建:class 可迭代对象名称: def __iter__(self): return 迭代器# 使用: for 变量名 in 可迭代对象: 语句
(3) 原理:
迭代器 = 可迭代对象.__iter__()while True: try: print(迭代器.__next__()) except StopIteration: break
(4) 演示:
message = "我是花果山水帘洞孙悟空"# for item in message:# print(item)# 1. 获取迭代器对象iterator = message.__iter__()# 2. 获取下一个元素while True: try: item = iterator.__next__() print(item) # 3. 如果停止迭代则跳出循环 except StopIteration: break
练习1:创建列表,使用迭代思想,打印每个元素.练习2:创建字典,使用迭代思想,打印每个键值对.
3.2 迭代器对象iterator(1) 定义:可以被next()函数调用并返回下一个值的对象。
(2) 语法
class 迭代器类名: def __init__(self, 聚合对象): self.聚合对象= 聚合对象 def __next__(self): if 没有元素: raise StopIteration return 聚合对象元素
(3) 说明:聚合对象通常是容器对象。
(4) 作用:使用者只需通过一种方式,便可简洁明了的获取聚合对象中各个元素,而又无需了解其内部结构。
(5) 演示:
class StudentIterator: def __init__(self, data): self.__dat