第一阶段第九章——异常,模块与包

1.了解异常

(1)什么是异常

答:

        在Python中,异常是指在执行代码时发生的错误或异常情况,这可能会导致程序终止或产生意外结果。在Python中,可以使用异常处理机制来捕获和处理这些异常,从而使程序更加健壮并能够处理各种不同的错误情况。一些常见的异常包括名称错误、类型错误、索引错误、零除错误等。


2.异常的捕获方法

(1)为什么要捕获异常

第一阶段第九章——异常,模块与包_第1张图片

(2)如何捕获异常

1.全部捕获

基本语法

第一阶段第九章——异常,模块与包_第2张图片

快速入门

第一阶段第九章——异常,模块与包_第3张图片

2.捕获指定异常

第一阶段第九章——异常,模块与包_第4张图片

3.捕获多个异常

第一阶段第九章——异常,模块与包_第5张图片

4.异常的else

第一阶段第九章——异常,模块与包_第6张图片

5.异常的finally

第一阶段第九章——异常,模块与包_第7张图片

上述几点的代码示例
"""
    演示捕获异常
"""
# 捕获所有异常,写法一
try:
    f = open("abc.txt", "r", encoding="UTF-8")
except:
    print("出现异常了,因为文件不存在,修改打开文件的模式")
    f = open("abc.txt", "w", encoding="UTF-8")

# 捕获所有异常,写法二
try:
    f = open("abc.txt", "r", encoding="UTF-8")
except Exception as e:
    print(f"出现异常了{e},因为文件不存在,修改打开文件的模式")
    f = open("abc.txt", "w", encoding="UTF-8")

# 未正确设置捕获异常类型,将无法捕获异常
# 捕获指定的异常
try:
    # 下面这个会被接收
    print(name)
    # 下面被注释的代码不会被接收
    # 1 / 0
except NameError as e:
    print(f"出现了变量未定义的异常:{e}")

# 捕获多个异常
try:
    # 下面这个会被接收
    print(name)
    # 下面的代码会接收
    1 / 0
except (NameError, ZeroDivisionError) as e:
    print(f"出现了变量未定义或者除零的异常:{e}")

# 异常else
try:
    f = open("asss.txt", "r", encoding="UTF-8")
except Exception as e:
    print("出现异常了")
else:
    print("好搞笑,居然没有异常")


# 异常finally
try:
    f = open("asss.txt", "r", encoding="UTF-8")
except Exception as e:
    print("出现异常了")
else:
    print("好搞笑,居然没有异常")
finally:
    print("我就是要执行@!!")
    f.close()


3.异常的传递

第一阶段第九章——异常,模块与包_第8张图片

"""
    异常的传递
"""
# 定义一个出现异常的方法
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}")

main()


4.Python模块

(1)模块的导入

1.什么是模块

第一阶段第九章——异常,模块与包_第9张图片

2.导入python内置的模块

第一阶段第九章——异常,模块与包_第10张图片

 基本语法

第一阶段第九章——异常,模块与包_第11张图片

除了使用 ' . '  这个符号来使用方法

还可以

第一阶段第九章——异常,模块与包_第12张图片

 还有一个通配符

第一阶段第九章——异常,模块与包_第13张图片

 as起别名

第一阶段第九章——异常,模块与包_第14张图片

上述几点的代码示例

"""
    模块
"""
# 导入了Python内置的time模块(time.py)这个文件
import time

# 睡眠五秒钟
print('我浅浅睡5s')
time.sleep(5)
print('我直接苏醒!!!')

from time import sleep

print('我浅浅睡5s')
sleep(5)
print('我再次苏醒!!!')

# 使用*导入全部方法
from time import *

print('我浅浅睡5s')
sleep(5)
print('我再次苏醒!!!')

# 使用as改名
import time as t
print('我浅浅睡5s')
t.sleep(5)
print('我再次苏醒!!!')

from time import sleep as sp
print('最后睡5s')
sp(5)
print('醒了')

但是导入一般都写在真个代码的开头哦~~

(2)自定义模块

1.自定义模块

第一阶段第九章——异常,模块与包_第15张图片

第一阶段第九章——异常,模块与包_第16张图片

2.测试模块

第一阶段第九章——异常,模块与包_第17张图片

3.__all__

第一阶段第九章——异常,模块与包_第18张图片

4.上述代码示例

主体代码

"""
    自定义模块
"""
# 导入自定义模块使用
"""
import my_module1

my_module1.test(1, 2)
"""


# 导入不同模块的同名功能
"""
from my_module1 import test
from my_module2 import test
test(1, 2)

"""


# __main__ 变量
# from my_module1 import test

# __all__  变量
from my_module1 import *
test1(1, 2)
# test2(1, 2)  不在all里面,不行,但是还是可以自己手动导入

my_module1.py

__all__ = ["test1"]


def test1(a, b):
    print(a + b)

def test2(a, b):
    print(a - b)

# test(1, 2)
if __name__ == '__main__':
    test1(1, 2)

my_module2.py


def test(a, b):
    print(a - b)

5.Python包

(1)自定义包

1.什么是Python包

第一阶段第九章——异常,模块与包_第19张图片

1.快速入门

第一阶段第九章——异常,模块与包_第20张图片

2.导入包

第一阶段第九章——异常,模块与包_第21张图片

 注意第一阶段第九章——异常,模块与包_第22张图片

(2)安装第三方包

1.了解什么是第三方包

第一阶段第九章——异常,模块与包_第23张图片

2.安装第三方包-pip

第一阶段第九章——异常,模块与包_第24张图片

网速太慢怎么办?那就这样干!

第一阶段第九章——异常,模块与包_第25张图片

也可以在pycharm中安装我就不演示了

6.综合案例

第一阶段第九章——异常,模块与包_第26张图片

参考代码

my_package包内容

        file_util.py

def print_file_info(file_name):
    """
    打印文件的全部内容
    :param file_name: 文件路径
    """
    f = None
    try:
        f = open(file_name, 'r', encoding="UTF-8")
        r = f.read()
        print(f"文件的全部内容如下\n {r}")
    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:
    """
    try:
        f = open(file_name, "a", encoding="UTF-8")
        f.write(data)
    except FileNotFoundError as e:
        print(f"文件未找到{e}")
    finally:
        f.close()


if __name__ == '__main__':
    print_file_info("D:\\IOText\\b.txt")
    append_to_file("D:\\IOText\\b.txt", "I love ly")
    print_file_info("D:\\IOText\\b.txt")

str_util.py

"""
    字符串相关工具
"""


def str_reverse(s):
    """
    将字符串反转返回
    :param s: 将被反转的字符串
    :return:  反转之后的字符串
    """
    return s[::-1]


def substr(s, x, y):
    """
    按照下标xy对文件进行切片
    :param s:  将被切片的字符串
    :param x:  切片的开始下标
    :param y:  切片的终止下标
    :return:
    """
    return s[x:y:1]


"""
    测试
"""
if __name__ == '__main__':
    print(str_reverse("jwg evol yl"))
    print(substr("ly love gwj", 0, 2))

主题调用测试

"""
    演示异常、模块和包的案例
"""

import my_utils.str_util as str
from my_utils import file_util

print(str.str_reverse("迈首科技"))
print(str.substr("masoul", 0, 4))

file_util.print_file_info("D:\\IOText\\b.txt")
file_util.append_to_file("D:\\IOText\\b.txt", "李悦也爱我")
file_util.print_file_info("D:\\IOText\\b.txt")

 


结语

其实Python这些操作和java的操作也是挺相似的,所以编程语言一通万物通加油吧各位!!!

拜拜

ヾ( ̄▽ ̄)Bye~Bye~

你可能感兴趣的:(Python之路,python)