师从黑马程序员
异常的概念
异常演示
捕获异常的方法
try:
f=open("D:/abc.txt","r",encoding="UTF-8")
except:
print("出现异常了,因为文件不存在,我将open的模式,改为w模式去打开")
f=open("D:/abc.txt","w",encoding="UTF-8")
捕获指定异常
#捕获指定异常
try:
print(name)
except NameError as e:
print("出现了变量未定义的异常")
print(e)#记录异常的原因
捕获多个异常
try:
print(name)
1/0
except (NameError,ZeroDivisionError) as e:
print("出现了变量未定义 或者 除以0的异常错误")
捕获所有异常
try:
print(name)
1/0
f=open("D:/123.txt","r")
except Exception as e:
print("出现异常")
异常else
try:
print(name)
1/0
f=open("D:/123.txt","r")
except Exception as e:
print("出现异常")
else:
print("好高兴,没有异常")
异常的finally
try:
print(name)
1/0
f=open("D:/123.txt","r",encoding="UTF-8")
except Exception as e:
f = open("D:/123.txt", "w", encoding="UTF-8")
else:
print("好高兴,没有异常")
finally:
print("我是finally,有没有异常,我都要执行")
f.close()
异常的传递
def func1():
print("func1开始执行")
num=1/0
print("func1结束执行")
def func2():
print("func2开始执行")
func1()
print("func2结束执行")
def main():
try:
func2()
except Exception as e:
print(f"出现异常了,异常的信息是:{e}")
main()
Python模块
模块的概念
模块的导入方式
import模块名
from模块名import功能名
from time import sleep
print("你好")
sleep(5)
print("我好")
from模块名import*
from time import * #*表示全部的功能
print("你好")
sleep(5)
print("我好")
as定义别名
import time as t
print("你好")
t.sleep(5)
print("我好")
from time import sleep as sl
print("你好")
sl(5)
print("我好")
注:如果要导入模块,放在代码开头就可以
自定义模块
制作自定义模块
主函数代码
#方法1
# import my_module1
# my_module1.test(1,2)
#方法2
from my_module1 import test
test(1,2)
my_module1部分的代码
def test(a,b):
print(a+b)
注意事项
当导入多个模块的时候,且模块内有同名函数,当调用这个同名函数的时候,调用的是后面导入的模块的功能
自定义模块功能测试
我们可以在自定义模块中直接调用其中的函数,但如果我们不想主代码在导入此模块时,输出我们测试时调用函数的结果我们可以将测试函数的代码放在
if __name__ == '__main__':(输入main再点击tab即可)
如:
def test(a,b):
print(a+b)
if __name__ == '__main__':
test(1,2)
_all_变量
__all__=["test_a"]
def test_a(a,b):
print(a+b)
def test_b(a,b):
print(a-b)
自定义包
Python包的概念
快速入门
导入包
方式一:
#导入自定义包中的模块
#方法1
import my_package.my_module1
import my_package.my_moudule2
my_package.my_module1.info_print()
my_package.my_moudule2.info_print2()
#方法2
from my_package import my_module1
from my_package import my_moudule2
my_module1.info_print()
my_moudule2.info_print2()
#方法3
from my_package.my_module1 import info_print
from my_package.my_moudule2 import info_print2
info_print()
info_print2()
my_module1代码
"""
演示自定义模块1
"""
def info_print():
print("我是模块1的功能函数代码")
my_module2代码
"""
自定义模块2
"""
def info_print2():
print("我是模块2的功能函数代码")
方法二:
__all__=["my_module1"]
from my_package import *
my_module1.info_print()
#my_module2.info_print2()报错
安装第三方包
第三方包的概念
安装第三方包-pip
pip的网络优化
Python异常、模块、包:综合案例
主代码
import my_utils.str_util
from my_utils import file_util
print(my_utils.str_util.str_reverse("黑马程序员"))
print(my_utils.str_util.substr("itheima",0,4))
file_util.append_to_file("D:/test_oppend.txt","itheima")
file_util.print_file_info("D:/test_append.txt")
str_util。py代码
"""
字符串相关的工具模块
"""
def str_reverse(s):
"""
完成字符串的反转
:param s:
:return:
"""
return s[::-1]
def substr(s,x,y):
"""
给指定的下标完成给定字符串的切片
:param s: 即将被切片的字符串
:param x: 切片的开始下标
:param y: 切片结束下标
:return: 切片完成的字符串
"""
return s[x:y]
# if __name__ == '__main__':
# print(str_reverse("黑马程序员"))
# print(substr("黑马程序员",1,3))
file_util.py代码
"""
文件处理相关的工具模块
"""
def print_file_info(file_name):
"""
将给定路径的文件内容输出到控制台中
:param file_name:即将读取的文件路径
:return:None
"""
f=None
try:
f=open(file_name,"r",encoding="UTF-8")
content=f.read()
print("文件的全部内容如下:")
print(content)
except Exception as e:
print(f"程序出现异常了,原因是:{e}")
finally:
if f:
f.close()
def append_to_file(file_name,data):
"""
将指定的数据追加到指定的文件中
:param file_name: 指定的文件路径
:param data: 指定的数据
:return: None
"""
# if __name__ == '__main__':
# # print_file_info("D:/bill.txt")
# append_to_file("D:/test_append.txt","黑马程序员")
若有侵权,请联系作者