python基础 | 模块与异常

本文介绍了Python中的模块系统,如何组织和重用代码,以及异常处理机制,包括except处理单个或所有错误,数值错误和IO错误的示例,以及finally关键字用于确保无论是否发生异常,都会执行的代码块。
摘要由CSDN通过智能技术生成

1、模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句

模块让你能够有逻辑地组织你的 Python 代码段,不可能把代码写在一起
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。把代码揉到一起不便于 复用

模块能定义函数,类和变量,模块里也能包含可执行的代码

my_module.py

import sys


def get_path():
    print('The PYTHONPATH is', sys.path, '\n')


class Demo:
    a = 88

    def func(self):
        print("I am a member: ", self.a)

test.py

import my_module as a # 换了个名字
from my_module import Demo # 只引入了一个类,只引入了一部分,import * 引入全部

a.get_path()
d = Demo()
d.func()

输出结果

The PYTHONPATH is ['D:\\BaiduNetdiskDownload\\学员资料-20230710\\学员资料\\Python\\python基础\\13-模块', 'D:\\BaiduNetdiskDownload\\学员资料-20230710\\学员资料\\Python\\python基础\\13-模块', 'D:\\miniconda\\python311.zip', 'D:\\miniconda\\DLLs', 'D:\\miniconda\\Lib', 'D:\\miniconda', 'D:\\miniconda\\Lib\\site-packages', 'D:\\miniconda\\Lib\\site-packages\\win32', 'D:\\miniconda\\Lib\\site-packages\\win32\\lib', 'D:\\miniconda\\Lib\\site-packages\\Pythonwin'] 

I am a member:  88

2、异常

except 从句 可以专门处理 单⼀的错误或异常。如果没有给出错误或异常的名称,它会处理所有的错误和异常

对于每个 try 从句,至少都有⼀个相关联的 except 从句异常 就是用来处理错误的,对于抛出的异常:解决或结束程序

2.1 数值错误异常

while True:
     try:
         n = input("请输入一个整数: ")
         n = int(n)
         break
     except ValueError as e:
         print("无效数字,异常内容为:", e) # e就是异常的类型,异常结束之后再进入while
print("\n\n")

输入a,输出
在这里插入图片描述
输入1,结束程序

2.2 IO异常

import sys

try:
    f = open('test.txt')
except IOError as e:
    print("I/O error", e)

没有对应文件test.txt,输出结果
在这里插入图片描述

2.3 自定义异常

class MyException(Exception): # 需要继承标准的异常类的实现,C++/python异常都是以类来实现的
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast

很多时候,我们可预知某种错误的时候,希望在调用方 来处理异常,可以使用 已有异常类型
或者 ⾃定义异常,通过 raise 抛出去

try:
    s = input('Enter something --> ')
    if len(s) < 10:
        raise MyException(len(s), 10)
except MyException as x: # 捕获MyException异常
    print('MyException: The input was of length %d, \
          but we expect length at least %d' % (x.length, x.atleast))
else:
    print('No exception was raised.')

输入1234 / qweiutieuiut
输出
在这里插入图片描述
在这里插入图片描述

3、finally关键字

如果我们不管是否有异常,都执⾏某段代码,可以使用finally关键字

def test():
    try:
        print('to do stuff')
        raise Exception('hehe') # 抛出异常程序就终止了
    except Exception:
        print('process except')
        print('to return in except')
        return 'except'
    finally: # 即使有异常,把没有做的工作做完,不管有没有异常都会执行
        print('to return in finally')
        return 'finally'


res = test()
print('test finally function returns : ' + res)

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值