1. 体验异常
# 异常的 语法格式
'''
try:
可能出现错误的语句
except:
出现错误后执行的语句
'''
try:
info_print()
except:
def info_print():
print('出现错误会被执行的程序')
info_print()
2. 捕获所有异常
# Exception 捕获所有异常
try:
print(num)
except Exception as result:
print(result) # name 'num' is not defined
3. 异常中的else 异常中的finally
# 捕获所有异常
try:
print(1/0) # 被除数不能为 0
except Exception as result:
print(result)
else:
print(f'没有异常执行的 语句')
finally:
print(f'有无异常都会执行的 命令 finally')
4. 异常的传递
import time
try:
print(1)
try:
i = 0
while i < 6:
time.sleep(2) # 等待两秒后执行
print(f'循环到了第{i}次')
i += 1
except:
print(f'程序异常执行的命令2')
except:
print(f'程序异常执行的命令1')
5. 自定义异常
# 创造一个异常的 类
class A(Exception):
def __init__(self, lenght, min_len):
# 密码的长度
self.lenght = lenght
# 系统要求的最小长度
self.min_len = min_len
def __str__(self):
return f'你的密码长度为{self.lenght}, 密码长度不能小于{self.min_len}'
def main():
try:
password = input('请输入你的密码:')
if len(password) < 3:
# 抛出 异常
raise A(len(password), 3)
# 捕获异常
except Exception as result:
print(result)
else:
print('密码输入完成, 设置密码成功')
main()
6. 导入模块
# 方法一
# import math
# print(math.sqrt(16)) # 谁的平方是 16
# Python 中关于除法的运算都会带小数点(也就是浮点数)
# 方法二
# from math import sqrt
# print(sqrt(16))
# 方法三
# from math import *
# print(sqrt(16))
# 模块别名
# import time as tt # 起别名后只能使用别名, 之前的名字就不能用了
# tt.sleep(2)
# print('等待2秒后出现')
from time import sleep as sl
sl(2)
print('等待2秒后出现')
7. my_module1 和 调用函数模块
# my_module1
def test(a, b):
print(a * b)
# 1. __name__ 是系统变量, 只有在自己的py文件中才会是 __main__
# 2. 在其他py文件中调用, __name__ 是 py 文件名
print(__name__)
# 只有在本文件中运行,才会执行测试方法
if __name__ == '__main__':
test(3, 3)
# 调用模块
import my_module1
my_module1.test(4, 4)
8. 模块定位顺序注意点
9. __all__列表
# my_module1
# __all__ 列表
__all__ = ['testA']
def testA():
print('testA')
def testB():
print('testB')
# __all__ 列表
from my_module1 import *
testA()
# 1. 用 from my_module1 import * 导入时
# 2. __all__列表只能调用[]列表里面的
testB() # 会报错
10. 导入包 的两种方法