第九章:Python异常、模块与包

文章详细介绍了Python中的异常处理机制,包括异常的定义、捕获、传递以及如何使用else和finally子句。同时,讲解了Python模块的导入、自定义模块和__main__的作用,以及模块导入时的注意事项。此外,还探讨了Python包的概念、作用和创建方法,以及如何管理和安装第三方包。最后,通过一个综合案例展示了如何在实际编程中应用异常处理和包结构。
摘要由CSDN通过智能技术生成

一、了解异常

1.什么是异常:

异常就是程序运行的过程中出现了错误

2.bug是什么意思:

bug就是指异常的意思,因为历史因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误。

二、异常的捕获方法

这个语法是可以捕获所有的异常:

捕获特定的错误类型的异常

通过print(e)还可以输出错误的类型的描述

  • 补充

  • 异常else

  • 异常的finally

  • 总结

else和finally是可有可无

如果是要捕获所有的异常

•except:

•except Exception:

•两种方式捕获全部的异常,更多是使用第二种

三、异常的传递

  • 异常的传递

fun01的异常会在main中捕获(最高层级中去捕获)

mian():利用异常具有传递性的特点, 当我们想要保证程序不会因为异常崩溃的时候,

就可以在main函数中设置异常捕获,由于无论在整个程序哪里发生异常, 最终都

会传递到main函数中, 这样就可以确保所有的异常都会被捕获

四、Python模块

1.模块的导入

  • 模块:Python 模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码.

  • 模块的作用:python中有很多各种不同的模块, 每一个模块都可以帮助我们快速的实现一些功能, 比如实现和时间相关的功能就可以使用time模块,我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能.

即:模块就是一个Python文件,里面有类、函数、变量等,我们可以拿过来用(导入模块去使用)

  • 模块的导入方式

from和as都是可以省略的

  • 注意事项

通过'.'来确定层级关系,模块的导入一般卸载文件的开头位置。

2.自定义模块

  • 制作自定义模块

  • 测试模块(__mian__的作用)

if__main__ == “__main__”表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入:

  • __all__的使用

不写all就是导入全部

  • 注意事项

不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的

五、Python包

  • Python包的概念:从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件,从逻辑上看,包的本质依然是模块。

  • 包的作用

当我们的模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块

  • 包的创建

  • 第三方包

  • 安装第三方包的方法

1.这是通过外网的方式进行下载,会比较慢

2.pip网络优化,用国内的网

3.在pycharm中进行下载

综合案例

首先新建python软件包

在file_util中

"""
文件处理相关的工具模块
"""

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:  # 只有当变量NONE时候是False,如果有内容才是True(如果有open文件就True,后续才可以关闭文件)
            f.close()

def append_to_file(file_name, data):
    """
    功能:将指定的数据追加到指定的文件中
    :param file_name: 文件的路径
    :param data: 指定的数据
    :return: None
    """
    f = open(file_name, 'a', encoding='UTF-8')
    f.write(data)
    f.write('\n')
    f.close()

if __name__ == '__main__':
     print_file_info('D:/bill.txt')
     append_to_file('D:/test_append.test', '黑马程序员')

在str_util

"""
 字符串相关的工具模块
"""
def str_reverse(s):
    """
    将字符串完成反转
    :param s:将被反转的字符串
    :return:反转后的字符串
    """
    return s[::-1]

def substr(s, x, y):
    """
    按照下标x和y,对字符串进行切片
    :param s: 被切片的字符串
    :param x:开始切片下标
    :param y:结束切片的下标
    :return:切片后的字符串
    """
    return s[x:y:1]

if __name__ == '__main__':
    print(str_reverse('黑马程序员'))
    print(substr('黑马程序员', 1, 3))

在pythonProject中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值