目录
if _ _ name_ _ ='_ _ main _ _'
了解异常
异常就是bug
异常的捕获
捕获常规异常
try:
#可能发生错误的代码
except:
#如果出现异常要执行的代码
捕获指定异常
try:
print(name);
except NameError as e:
print("name变量名称未定义错误");
如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
一般try下方只放一行要执行的代码
捕获多个异常
当捕获多个异常时,可以把要捕获的异常类型的名字放到except后,并用元组的方式进行书写
try:
print(1/0);
except (NameError,ZeroDivisionError):
print("出现异常");
捕获全部异常
Exception:顶级的异常
try:
except Exception as e:
print("出现异常了");
异常else
else表示的是如果没有异常要执行的代码
try:
except Exception as e:
print("出现异常了");
else:
print("没有出现异常");
finally
表示无论异常都要执行的代码
try:
except Exception as e:
print("出现异常了");
else:
print("没有出现异常");
finally:
print("Hello,world");
练习
捕获常规异常
#f = open("D:\ACM\算法基础\pppython.txt","r",encoding="UTF-8");
try:
f = open("D:\ACM\算法基础\pppython.txt", "r", encoding="UTF-8");
except:
print("出现异常,文件不存在,换为w模式打开");
f = open("D:\ACM\算法基础\pppython.txt", "w", encoding="UTF-8");
捕获指定异常
#f = open("D:\ACM\算法基础\pppython.txt","r",encoding="UTF-8");
try:
print(name);
except NameError as e:
print("出现变量未定义异常");
#f = open("D:\ACM\算法基础\pppython.txt", "w", encoding="UTF-8");
e就是异常的信息
#f = open("D:\ACM\算法基础\pppython.txt","r",encoding="UTF-8");
try:
print(name);
except NameError as e:
print("出现变量未定义异常");
print(e);
#f = open("D:\ACM\算法基础\pppython.txt", "w", encoding="UTF-8");
捕获多个异常
try:
print(1/0);
except (NameError,ZeroDivisionError) as e:
print("出现了变量定义错误 或者 除以0的异常错误")
捕获全部异常
try:
print(1/0);
except Exception as e:
print("出现异常了");
异常else
try:
print(1);
except Exception as e:
print("出现异常");
else:
print("我是e,是没有异常的时候执行的代码");
finally
表示无论是否异常都要执行的代码
例如:关闭文件f.cose()
try:
print(1);
except Exception as e:
print("出现异常");
else:
print("我是e,是没有异常的时候执行的代码");
finally:
print("必须执行这一条代码");
异常的传递性
def fun1():
print("fun1 开始执行");
num = 1 / 0;
print("fun1 结束执行");
def fun2():
print("fun2 开始执行");
fun1();
print("fun2 结束执行");
def main():
fun2();
main()
用来捕获异常
def fun1():
print("fun1 开始执行");
num = 1 / 0;
print("fun1 结束执行");
def fun2():
print("fun2 开始执行");
fun1();
print("fun2 结束执行");
def main():
try:
fun2();
except Exception as e:
print(f"出现异常,异常的信息是{e}");
fun2();
main()
模块的概念和导入
基本语法
【from 模块名】 import 【模块 | 类 |变量 | 函数 | *】【as 别名】
【】:可选的意思
*:导入全部内容
import 模块名
基本语法:
import 模块名
import 模块名1,模块名2
time.sleep:通过“ . ”就可以使用模块内的全部功能
from模块名import功能名
基本语法:
from 模块名 import 功能名
功能名
from模块名impor *
基本语法:
from 模块名 import *
功能名
as定义别名
模块定义别名
import 模块名 as 别名
功能定义别名
from 模块名 import 功能 as 别名
练习
import 模块名
import time;
print("开始");
time.sleep(5);
print("结束");
from模块名import功能名
from time import sleep
print("开始");
sleep(5);
print("结束");
from模块名import *
from time import *
print("开始");
sleep(5);
print("结束");
as定义别名
模块定义别名
import time as ss
print("你好");
ss.sleep(5);
print("结束");
功能定义别名
from time import sleep as ss
print("开始");
ss(5);
print("结束");
自定义模块并导入
模块名字要符合命名规则
if _ _ name_ _ ='_ _ main _ _'
if _ _ name_ _ ='_ _ main _ _' :
test(1,2)
只有在函数库里面才会运行
_ _all _ _
是一个列表
如果当前模块文件里面有一个_ _all _ _变量
当使用from xxx import *来导入的时候,只能导入这个列表中的元素
_ _all _ _=【test_A】
import monkey
monkey.king();
def king():
print("猴哥!你好!!");
自定义Python包
导入包:
import 包名.模块名
包名 . 模块名 . 目标
import my_package.my_module1
import my_package.my_module2
my_package.my_module1.info_print1()
my_package.my_module2.info_print1()
def info_print1():
print("我是模块1");
def info_print1():
print("我是模块2");
安装第三方包
可以在命令提示符里面写python