异常-模块-包-Python

师从黑马程序员

异常的概念

异常演示

捕获异常的方法

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","黑马程序员")

若有侵权,请联系作者

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘~风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值