Python 异常,模块与包

346 阅读5分钟

第一步:我们首先来了解什么是异常?异常就是当检测到一个错误时,Python解释器就无法正常继续执行了,反而出现了一些错误的提示;异常也是我们常说的BUG(代表软件出现异常了)。 代码演示:以'r'方式打开一个不存在的文件

f = open ('my.text','r')

运行结果:

File "C:\Users\PycharmProjects\pythonProject4\异常.py", line 1, in f = open ('my.text','r' FileNotFoundError: [Errno 2] No such file or directory: 'my.text'

Process finished with exit code 1`

当我们用‘r'模式去打开一个不存在的文件时,它就会出现一个异常的提示,它显示No such file or directory:'my.text',这个就是异常了;同时它也会告诉我们出错的代码是哪一个:line 1即第一行的代码出现了异常。

第二步:我们可以去捕获异常。世界上没有完美的程序,异常随时可能出现在我们的程序当中,导致我们的程序无法运行。所以在力所能及的范围之内,对可能出现的bug,进行提前的预测和处理。(这个就是异常的捕获了)我们可以用以下方式去捕获异常:

try: 可能发生错误的代码

except: 如果出现异常执行的代码 (else:) 没有出现异常时执行的代码 (finally:) 无论是否出现异常都要执行
第三步:异常的传递,异常是具有传递性的。

#  定义一个异常
def func1():
    print("func1开始执行")
    num= 1/0    # 出现异常0不能作为分母
    print("func1结束执行")
def func2():
    print("func2开始执行")
    func1()
    print("func2结束执行")
def  main():
    func2()

main()

运行结果: func2开始执行 func1开始执行 Traceback (most recent call last): File "C:\Users\PycharmProjects\pythonProject4\异常.py", line 13, in main() File "C:\Users\PycharmProjects\pythonProject4\异常.py", line 11, in main func2() File "C:\Users\PycharmProjects\pythonProject4\异常.py", line 8, in func2 func1() File "C:\Users\PycharmProjects\pythonProject4\异常.py", line 4, in func1 num= 1/0 # 出现异常0不能作为分母 Process finished with exit code 1

从运行结果中我们可以看出异常(即num= 1/0 # 出现异常0不能作为分母)出现在func1()中后面传递到了func2()中,然后调用main()函数,异常就出现在了main()中了。

    def main ():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,异常是:{e}")
main ()

运行结果:出现异常了,异常是:division by zero 从这个代码中我们可以捕获到异常(出现异常了,异常是:division by zero)

第四步:Python模块。模块就是一个Python文件,里面包含类,函数,变量,可执行的代码等,可以帮助我们实现不同的功能。当然模块在使用之前需要先导入。导入方式如下:

# 使用import导入time模块使用sleep功能
import time    # 导入Python内置的time模块(time.py这个代码文件)
print("你好")
time.sleep(5)
print ("好")
# 使用from导入time的sleep功能
from time import sleep
print("开始")
sleep(3)    # 让程序睡眠3秒
print("结束")
# 使用*导入time模块的全部功能
from time import *
print ("开始")
sleep(3)    # 调用time模块里的sleep函数
print("结束")
# 使用as给特定功能加上别名
import time as t
print("开始")
t.sleep(3)    # 一开始给time命名为了t那么这里就用t来代替time
print("结束")

从上面代码中我们可以总结出导入模块的方式是:

[from 模块名] import [模块 / 类 / 变量 / 函数 / *] [as 别名]

我们也可以自己制作一个模块(自定义模块),如以下代码:

 # 新建一个Python文件,命名为my_module.py,并定义text函数
def text(a,b):
 print(a+b)
 # 在另一个Python文件中使用该模块中的text函数
from my_module import text

text(10,20)

导入不同模块的同名功能:当导入了2个不同的模块my_module1和my_module2调用同名的函数my_text时,它会使用后面模块中的函数。

模块测试:当你自定义了一个模块时,无论是当前文件还是已经导入了该模块的其它文件,在运行时都会自动执行'text'函数的调用。解决方法

    def text(a,b):
print(a+b)
if __name__ == '__main__':
    text(1,2)

在当前文件中使用if name == 'main',其中__name__是内置变量,然后通过==__main__就是这个变量了,运行时if就是Ture了,就可以执行text函数;那么已经导入了该模块的其他文件就无法执行'text'函数的调用了,这就实现了模块的测试[。] Python包:当模块很多时,包可以帮助我们管理这些模块,即包含多个模块,但包的本质依然是模块。创建一个新的Python包之后里面会有一个“init.py”的文件(该文件可以为空),有该文件才是包,没有该文件则不是包了。然后你就可以在创建的包里添加各种模块了。在其它代码中可以通过如下方式去导入包: 方法一:import 包名.模块名 包名.模块名.目标 方法二:from 包名 import 模块名 模块名.目标 方法三:from 包名.模块名 import 目标 目标 同样的,当一个包内有多个模块时,如果存在“all”变量,那么使用时,即使代表可以使用这个包里的所有模块 ,但仍然只能使用“all”变量所指向的模块。 第三方包:在Python中有许多第三方包(即非Python包),可以极大的帮助我们提高开发效率。但也需安装后才能导入使用它们,所以我们要学习第三方包的安装和导入使用。 第三方包的安装:打开Python中的命令提示符程序,在里面输入:pip install包名称,即可通过网络快速安装第三包了。也可以打开Pychram安装第三方包。