首页 > 编程语言 >python异常与模块

python异常与模块

时间:2024-10-19 17:48:37浏览次数:8  
标签:__ python 捕获 导入 出现异常 模块 异常

1.了解异常

什么是异常呢?

当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的bug

像这样,计算机会告诉你出错的是哪一行代码以及出现错误的问题所在

FileNotFoundError: 文件未找到

No such file or directory: 文件或目录不存在

2.异常的捕获方法

为什么要捕获异常?

世界上没有完美的程序,任何程序在运行的过程中,都有可能出现:异常,也就是出现bug导致程序无法完美的运行下去。我们要做的,不是力求程序完美运行,而是在力所能及的范围内,对可能出现的bug。进行提前准备、提前处理。这种行为我们称之为:异常处理(捕获异常)

捕获常规异常

当我们使用r模式时如果出现异常,可以捕获出现的异常,然后进行处理,以w模式去给他打开,文件不存在就会被创建出来

就是说,try里面出现异常,就直接执行except里面的代码

捕获指定异常

给大家分享以下四张截图,来分析捕获指定异常的意义

我们只捕获这个叫NameError的,捕获的类型不一样,就会导致捕获的异常没有被你处理掉,直接就输出了

a就是我们一开始看到的那个异常信息,我们通过as给异常起一个变量名字,然后打印出来

捕获多个异常

捕获全部异常

Exception其实就是顶级的异常,其他的异常都是它的小弟,所有的异常都是基于Exception这个异常所构建出来的

else

finally

try:

        可能要发生异常的语句

except 异常 as 别名:

        出现异常的准备手段

else:

        未出现异常时应做的事情

finally:

        不管出不出现异常都会做的事情

异常的种类多种多样,如果想要不管什么类型的异常都能捕获到,那么使用:

·except:

`except Exception:

一般使用第二个方法

3.异常的传递

异常的传递解析

不需要去底层捕获异常,可以等他传递到高层在去捕获它

#定义一个出现异常的方法
def func1():
    print("func1 开始执行")
    num = 1/0 #肯定有异常,除以0的异常
    print("func1 结束执行")
#定义一个无异常的方法,调用上面的方法
def func2():
    print("func2 开始执行")
    func1()
    print("func2 结束执行")
#定义一个方法,调用上面的方法
def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,异常的信息是:{e}")
main()

4.python模块

模块的导入

模块就是一个python代码文件,内含类、函数、变量等,我们可以导入进行使用

加入中括号,中括号在语法中的意思是可以不写,from可以不写,as 别名也可以不写

* 是全部内容的意思

当我们导入了模块名之后,就可以使用模块内部所定义的函数等等

如果我们想要查看time这个模块,可以点击ctrl+鼠标点击time

并且可以使用ctrl+f搜索想要的

通过.就可以使用模块内部的全部功能(类、函数、变量)

相当于我们只使用了time模块里面的sleep

其实就是给具体的模块或者说具体的功能完成改名的操作

注意事项:

·from可以省略,直接import即可

·as别名可以省略

·通过"."来确定层级关系

·模块的导入一般写在代码文件的开头位置

自定义模块

就是我们可以自己写一个文件,需要使用它时,直接import 导入它就可以了

模块名称其实就是文件名字,所以自定义模块名必须要符合标识符命名规则

当导入多个模块的时候,且模块内有同名功能,当调用这个同名功能的时候,调用到的是后面导入的模块的功能

当你调用这个模块时,它会自动执行这个模块里面的代码

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

这样test_b就用不了了

*是导入所有的,但是如果你写__all__就表示all后面的功能成了所有,只能导入all后面写的功能

all只作用在*上面。但是如果你不使用*,那么就没有影响

标签:__,python,捕获,导入,出现异常,模块,异常
From: https://blog.csdn.net/2401_87332612/article/details/143079192

相关文章

  • python 代码实例 --- GUI 登录界面
    importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QLineEdit,QPushButton,QVBoxLayout#type:ignoreclassLoginWindow(QWidget):def__init__(self):super().__init__()self.init_ui()definit_ui(self):......
  • abc_python_day01
    1.编译型VS解释型编译型将代码一次性全部编译成二进制,再执行优点:执行效率高缺点:开发效率低,不可跨平台代表语言:C语言解释型将代码一行一行地编译成二进制,再执行优点:开发效率高,可以跨平台缺点:执行效率低代表语言:python2.变量what:​ 在写代码的过程中,要用到......
  • python --- 类介绍
    构造函数__init__特殊变量1、私有变量(private),只有内部可以访问,外部不能访问,私有变量是在名称前以两个下划线开头,如:__name,其实私有变量也不是完全不能被外部访问,不能直接访问是因为python解释器对外把__name变量改成了_类名__name,所仍然可以通过_类名__name来访问__nam......
  • Python 独立成分分析(ICA) 详解与应用案例
    目录Python独立成分分析(ICA)详解与应用案例引言一、ICA的基本原理1.1统计模型1.2关键假设1.3ICA的应用场景二、Python中ICA的面向对象实现2.1`DataLoader`类的实现2.2`IndependentComponents`类的实现2.3`ICA`类的实现三、案例分析3.1盲源分离案例3.1.1......
  • Python基础——类与对象
      目录  类与对象的理解:构造方法:魔术方法:封装:继承: 单继承: 多继承:复写:类与对象的理解: 在程序中我们将类看作是设计图纸,对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程,在类中我们定义成员属性和方法。 来看下面这个例子,创建student类,......
  • Python学习的自我理解和想法(16)
    学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码!今天是学Python的第16天,从今天开始,每天一到两个常用模块,更完恢复到原来的。开学了,时间不多,写得不多,见谅。目录1.datetime模块(1).创建一个日期(2).创建一个时间(3).获取当前的时间(4).获取n天后的时间2.time模块(1)......
  • VSCode + Python + Shell 调试 (Debug) : debugpy
    场境:使用VSCode对一个用Shell脚本启动的Python程序进行Debug.1.debugpy安装在激活了相应的conda虚拟环境后,安装debugpy库:pipinstalldebugpy2.查看可用端口运行forportin{5000..6000};do(echo>/dev/tcp/localhost/$port)>/dev/null2>&1||echo"$portis......
  • Ubuntu 16.04 编译安装Python 2.7.18
    安装python2.7.18(注)使用aptinstallpython安装的版本是2.7.10,该版本对部分项目存在兼容性问题,因此需要手动编译安装安装python编译环境sudoaptinstallpython-devpkg-configlibreadline-devlibc6-devlibncursesw5-devbuild-essentialgdbpkg-configlibbz2-devlibffi-......
  • 低代码平台中的功能驱动开发:模块化与领域设计
    在现代软件开发中,尤其是在低代码平台的背景下,清晰地定义功能和模块是成功的关键。功能驱动开发强调功能的优先性,模块化设计则确保系统的可维护性和可扩展性。本文将探讨如何在低代码平台中有效地将功能与模块结合起来,形成一个清晰的领域模型。功能与模块的统一在开发软件时,功......
  • 【Python技术之Django精品教学】第11课--Python Django 迁移
    PythonDjango迁移没有这样的表?-product/models.py中定义的类仅仅是我们的数据库的概念,但它并没有在数据库中创建任何表。我们可以认为类Phone是概念性的模式。在创建任何表之前,如果我们试图访问创建前的表,它将抛出这样的错误。OperationalErrorat/admin/product/phone/......