一、捕获异常
1. try....except
try:
语句
except:# 一定执行except代码
出现异常的处理代码
异常时:
正确时:
2. 不同类型的异常:
两个数a、b,计算a/b
异常类型:1)b为0,输出不能为0 2)输入字母时,输出不能为字母
步骤:1)先输入两种异常情况,看输出错误的类型 2)输入相应代码至except下
3. 捕捉未知异常显示异常信息
except Exception as result:
print(result)
4. finally:不管是否异常都要执行代码
try:
..........
except:
.....
finally:
print("不管是否异常都要执行代码")
try: a = int(input("请输入数字")) b = int(input("请输入数字")) print(a/b) except ValueError: # 异常类型1 print("请输入正确的整数") except ZeroDivisionError: # 异常类型2 print("除数不能为0") except Exception as result: # 除了上面两种类型的异常 print(result) else: print("代码没有异常") finally: # 一定要执行 print("代码执行完成")
二、抛出异常
通过代码抛出异常
raise Exception("异常描述")
输入name和age,如果name为字母抛出异常;如果年龄<0,抛出异常;
思路:1)设计一个函数,为数字时返回True,其他时返回False
def digital(str1): sum = 0 for n in str1: if n >= '0' and n <= "9" return True return False
try: name = int(input("请输入name")) if digital(name): # 等价 if digital(name) == True raise Exception("名字不能有数字") age = int(input("请输入age")) if age <= 0: raise Exception("年龄不能小于0") except Exception as result: print(result)提示:函数返回布尔值,作为条件放到if或while后面时,if 函数名 == True 等价 if 函数名
如果函数返回True等于条件成立
三、模块
1. import 导入模块中所有
1. 一个py文件就是一个模块
2. 模块名称就是py名称,符合变量命名规则
import 模块名
import module1
print(module1.mysum(2, 4)) # module1中的mysum函数
2. from...import 只导入模块中特定函数
from module1 import mysum # 导入module1中mysum函数
print(mysum(2,4))
__name__属性
这个py文件正在执行,则name属性为main
3. 包
特殊的目录,目的是通过import语句可以一次性导入该目录下的所有模块
步骤:
1) 在项目里建立目录my_pack
2) 创建a1.py和a2.py两个文件
a1.py:
def my_max(a, b): if a > b: return a else: return b
a2.py:
def my_sum(a, b): return a + b
3) 创建__init__.py文件
from. import a1 #.相对路径
from. import a2
导入语法
from pack. a1 import my_max
总结:
异常
1. try....except except下代码为异常时执行代码,finally下代码一定执行
2. except xxx 某些异常时执行的代码
3. raise Exception("异常提示字符,主动提示")
包
1. 导入模块所有内容: import module1
2. 导入模块指定函数: from module 1 import my_max
3. 导入包(一定要有__init__.py): import pack
导入指定文件中的函数:from pack.a1 import my_max