Python bug终结者:常见错误+异常处理+程序调试+错误代码

本文主要是介绍Python bug终结者:常见错误+异常处理+程序调试+错误代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一).常见错误
  1. 缺少冒号引起错误:在 if,else,else,while,class,def 声明末尾需要添加冒号 :,若忘记添加将会提示“SyntaxError:invalid syntax”的语法错误。
  2. 将赋值运算符 = 和比较运算符 == 混淆:将会提示“SyntaxError:invalid syntax”的语法错误。
  3. 代码结构的缩进错误:将会提示错误信息如“IndetationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”和“IndentationError:expected an indented block”
  4. 修改元组和字符串的值时报错
  5. 连接字符串和非字符串:将会提示错误“TypeError:Can‘t convert ’int‘ object to str implicitly”。
  6. 在字符串首尾忘记加引号:将会提示错误“SyntaxError:EOL while scanning string literal”。
  7. 变量或者函数名拼写错误:将会提示错误“NameError:name ’xxx‘ is not defined”。
  8. 引用超过列表的最大索引:将会提示错误”IndexError:list index out of range“。
  9. 使用关键字作为变量名:将会提示错误”SystaxError:invalid syntax“。
  10. 变量没有初始值就使用增值操作符:将会提示错误“NameError:name ’xxx‘ is not defined”。
  11. 误用自增和自减运算符:将会提示错误”SystaxError:invalid syntax“。
  12. 忘记为方法的第一个参数添加self参数:将会提示错误”TypeError:myMethod() takes 0 positional arguments but 1 was given“。
(二)异常

1.异常的概念
当Python解释器遇到一个无法预期的程序行为时,它就会输出一个异常(exception)。例如遇到除以零,或是打开不存在的文件等。用户也可以使用raise语句,来抛出一个异常。当Python解释器遇到异常情况时,它会停止程序的运行,然后显示一个追踪(traceback)信息。
2.内置异常
Python的内置异常定义在 exceptions 模块中,此模块在Python解释器启动时就会自动加载
最常用的异常类的含义如下:
(1) BaseException:所有异常的基类。
(2) SystemExit:解释器请求退出。
(3) KeyboardInterrupt:用户中断执行。
(4) Exception:常规错误的基类。
(5) StopIteration:迭代器没有更多的值。
(6) GeneratorExit:生成器(generator)发生异常来通知退出。
(7) SystemExit:Python解释器请求退出。
(8) StandardError:所有的内置标准异常的基类。
(9) ArithmeticError: 所有数值计算错误的基类。
(10) FloatingPointError:浮点计算错误。
(11) OverflowError:数值运算超出最大限制。
(12) ZeroDivisionError:除(或取模)零 (所有数据类型)的错误。
(13) AssertionError:断言语句失败。
(14) AttributeError: 对象没有这个属性。
(15) EOFError:没有内置输入,常见的为文件读取错误,另外,Ctrl+D也会触发这个异常。
(16) EnvironmentError:操作系统错误的基类。
(17) IOError:输入/输出操作失败。
(18) OSError:操作系统错误。
(19) WindowsError:系统调用失败。
(20) ImportError:导入模块/对象失败。
(21) KeyboardInterrupt:用户中断执行(通常是Ctrl+C)。
(22) LookupError:无效数据查询的基类。
(23) IndexError:序列中没有此索引(index)。
(24) KeyError:映射中没有这个键。
(25) MemoryError:内存溢出错误(对于Python 解释器不是致命的)。
(26) NameError:没有声明对象或没有初始化对象。
(27) UnboundLocalError:访问未初始化的本地变量。
(28) ReferenceError:试图访问已经垃圾回收了的对象。
(29) RuntimeError:一般运行时的错误。
3.使用try…except语句处理异常
try…except语句用在处理Python所输出来的异常。
其语法为:

try:<语句>
except [<异常的名称> [, <异常类的实例变量名称>]]:<异常的处理语句>
[else:<没有异常产生时的处理语句>]

中括号 [ ] 内的语法是可以省略的
异常的名称可以是空白的,表示except语句处理所有类型的异常
异常的名称也可以是一个或多个
可以使用多个不同的except语句来处理不同的异常
else语句是没有异常发生时的处理程序
4.异常类的实例
每当有一个异常被输出时,该异常类就会创建一个实例,此实例继承了异常类的所有属性。每一个异常类实例,都有一个args属性。args属性是一个元组格式,这个元组格式可能只包含错误信息的字符串(1-tuple),也可能包含2个以上的元素(2-tuple,3-tuple,…)。
异常类的不同,这个元组格式也不同。
5.清除异常
try…finally语句可以用来当作清除异常的功能。不管try语句内是否运行失败,finally语句一定会被运行。
注意: try与except语句可以搭配使用,try与finally语句也可以搭配使用,但是except与finally语句不可以放在一起。
6.内置异常的协助模块

  • a、sys模块
    使用sys模块的exc_info()函数,可以取得目前正在处理的异常信息。exc_info()函数会返回一个元组,这个元组包括三个元素(类型、值、具体信息)。

  • b、traceback对象
    使用sys模块的exc_info()函数返回值的第三个元素,会返回一个traceback对象。traceback对象的接口函数可以捕捉、格式化,或是输出Python程序的堆栈追踪(stack trace)信息。
    traceback.print_exc():此函数调用sys.exc_info()来输出异常的信息。

7.抛出异常

  • a、raise语句:Python使用raise 语句抛出一个指定的异常。例如:
    >>>raise NameError('这里使用raise抛出一个异常')Traceback (most recent call last):File "<pyshell#13>", line 1, in <module>raise NameError('这里使用raise抛出一个异常')NameError: 这里使用raise抛出一个异常

raise 唯一的一个参数指定了要被抛出的异常,必须是一个异常的实例或者是异常的类(即Exception的子类)。
提示:若只想判断是否抛出一个异常而不想去处理它,此时使用raise语句是最佳的选择。

  • b、结束解释器的运行:用户可以利用输出SystemExit异常,来强迫结束Python解释器的运行。
    使用sys.exit()函数会输出一个SystemExit异常,sys.exit()函数会结束线程。
    若想正常结束Python解释器的运行,最好使用os模块的_exit()函数
  • c、离开嵌套循环:如果想离开循环的时候,通常是使用break语句。如果在一个嵌套循环之内,break语句只能离开最内层的循环,而不能离开嵌套循环,此时可以使用raise语句离开嵌套循环。

8.用户定义异常类
除了内置异常,Python也支持用户定义的异常。用户定义的异常与内置异常并无差别,只是内置异常是定义在exceptions模块中。当Python解释器启动时,exceptions模块就会事先加载。
Python允许用户定义自己的异常类,用户定义的异常类必须是从任何一个Python的内置异常类派生 而来。
还可以将创建的用户定义异常类,再当作其他用户定义异常类的基类。
通常异常类在创建时均以”Error“结尾,与标准的异常命名一样

(三).程序调试
  • a、使用assert语句
    通过使用assert语句,可以帮助用户检测程序代码中的错误。
    assert语句的语法格式:
    assert <测试码> [, 参数]
    测试码是一段返回True或是False的程序代码。
    若测试码返回true,则继续运行后面的程序代码。
    若测试码返回false,assert语句会输出一个AssertionError异常。并且输出assert语句的[参数],作为错误信息字符串。

  • b、使用__debug__内置变量

Python解释器有一个内置变量__debug__,__debug__在正常情况下的值是True。
>>> __debug__
True
当用户以最佳化模式启动Python解释器时,__debug__值为False。要使用最佳化模式启动Python解释器,须设置Python命令行选项-O。
语法格式:
if __debug__:if not (<测试码>):raise AssertionError [,参数]
(四)错误代码

Python的errno模块,包含许多错误代码(errno)的系统符号(system symbol)。errno模块用在定义操作系统所返回的整数错误码,及其对应的系统符号。
当用户使用dir(errno) 指令时,可以得到所有错误代码的系统符号。
在这里插入图片描述
使用os模块strerror()函数,可以将错误代码转换成该错误代码的说明字符串。例如错误代码error.E2BIG的说明字符串是’Arg list too long‘。
在这里插入图片描述
在这里插入图片描述

这篇关于Python bug终结者:常见错误+异常处理+程序调试+错误代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739632

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp