python语法错误概述_Python 错误和异常代码详解
程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错。。。
程序员的一生,始终伴随着一件事 - 调试(错误检测、异常处理)。反反复复,最可怕的是:不仅自己的要改,别人的也要改。。。一万头草泥马奔腾而过!
错误
程序错误,主要分为三类:
语法错误
逻辑错误
运行时错误
语法错误
语法错误(也称:解析错误):是指不遵循语言的语法结构引起的错误(程序无法正常编译/运行)。
在编译语言(例如:C++)中,语法错误只在编译期出现,编译器要求所有的语法都正确,才能正常编译。不过对于直译语言(例如:Python)来说,语法错误可能在运行期才会出现,而且不太容易区分语法错误及语义错误。
常见的 Python 语法错误有:
遗漏了某些必要的符号(冒号、逗号或括号)
关键字拼写错误
缩进不正确
空语句块(需要用 pass 语句)
例如,编写这样一个条件判断语句:
>>> if n < 5
File "", line 1
if n < 5
^
SyntaxError: invalid syntax
由于 if 语句中缺少一个冒号(:),不符合 Python 语法,因此程序无法正常运行。
逻辑错误
逻辑错误(也称:语义错误):是指程序的执行结果与预期不符(程序可以正常运行,不会 Crash)。
与语法错误不同的是,逻辑错误从语法上来说是正确的,但会产生意外的输出或结果,并不一定会被立即发现。逻辑错误的唯一表现就是错误的运行结果。
常见的逻辑错误有:
运算符优先级考虑不周
变量名使用不正确
语句块缩进层次不对
在布尔表达式中出错
例如,要计算两个数的平均值:
>>> def average(a, b):
... return a + b / 2 # 应为 (a + b) / 2
...
>>>
虽然程序能够正常运行,但代码中缺少括号,由于运算符优先级(先乘除,后加减)的缘故,运算结果并不正确。
运行时错误
运行时错误:是指程序可以运行,但是在运行过程中遇到错误,导致意外退出。
当程序由于运行时错误而停止时,通常会说程序崩溃了。在 Python 中,这种运行时错误被称为异常。
Python 中的一些运行时错误:
使用未定义的标识符(NameError)
除数为 0(ZeroDivisionError)
打开的文件不存在(FileNotFoundError)
导入的模块没被找到(ImportError)
例如,除数为 0:
>>> 5 / 0
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: division by zero
每当出现这类运行时错误时,Python 就会创建一个异常对象。如果处理不当,会输出一个跟踪(Traceback)到那个错误,以及关于为什么会出现错误的一些细节。
内置异常的层次结构
Python 中有许多内置的异常,当出现相应的错误时,就会引发这些异常。
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
+-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning
注意: 当捕获异常或者决定应该继承哪个异常类时,这个层次关系非常有用。
总结
以上就是本文关于Python 错误和异常代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
python语法错误概述_Python 错误和异常代码详解相关推荐
- python 制作抽奖_python制作抽奖程序代码详解
实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...
- python绘制条形图用什么函数_python绘制条形图方法代码详解
1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...
- kmeans python interation flag_机器学习经典算法-logistic回归代码详解
一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...
- python批量删除文件名中的下划线-代码详解
删除文件名中的下划线 代码示例: 代码详解 对于文件名中出现的"_",如(500_600),将下划线消除,替换为(500600) 代码示例: import osdef rename ...
- python if else格式_Python if else条件语句详解
我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条.第3条--一直到最后一条语句,这称为顺序结构. 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童 ...
- python怎样实现封装_Python底层封装实现方法详解
Python底层封装实现方法详解 这篇文章主要介绍了Python底层封装实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 事实上,pyth ...
- python实现括号匹配算法_Python实现括号匹配方法详解
这篇文章主要简介了python实现括号匹配方法详解,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 1.用一个栈[python中可以用List]就可 ...
- python语言格式化输出_Python format()格式化输出方法详解
原标题:Python format()格式化输出方法详解 format() 方法的语法格式如下: str.format(args) 此方法中,str 用于指定字符串的显示样式:args 用于指定要进行 ...
- [转载] python支持complex吗_Python 内置函数complex详解
参考链接: Python complex() 英文文档: class complex([real[, imag]]) Return a complex number with the value re ...
最新文章
- 织梦dedecms如何快速使用拼音首字母做栏目名称
- 二十四,Arrays和比较器
- elementUI+vue-cli el-table=》excel
- markdown 编辑器_Markdown 编辑器使用指南
- 什么是单模光纤收发器,应用范围有哪些?
- 在Linux下不使用密码远程登陆其他Linux
- 新商业蓝皮书2021
- C语言程序设计 基础知识点
- ACE事件类型及模板
- Lattice FPGA 使用指南4 - 全局复位网络GSR的使用
- 大师典藏!齐白石-巨匠笔下的小动物系列数字藏品限量发售!
- Spring: error at ::0 can‘t find referenced pointcut的错误并解决
- 如何在word中的图片上画圈标注_怎么在word图片上画圈
- 讨论一下微信小程序中如何长按识别图片中二维码跳转
- jquery清空某个元素下的所有节点
- Imagination推最强多核GPU系列!AI算力达24 TOPS,支持自动驾驶和数据中心
- Sql Hacks 阅读感悟——数值处理
- 基于EEG和fNIRS的混合生物标志物的脑成像
- Codeforces Round #510 (Div. 2)
- web应用商城部署(mall)
热门文章
- Fiddler抓包工具详解(二)(fiddler菜单工具栏详解,相关快捷键)
- jupyter 显示全部数据
- 2020 操作系统第五天复习(知识点总结)
- SpringBoot @Value、 @ConfigurationProperties 与 @EnableConfigurationProperties 使用
- 用静态工厂方法代替构造器
- docker logs 容器日志文件路径查看
- docker容器间数据共享
- Linux 格式化输出当前系统时间
- 计算机网络--详述OSI七层模型与TCP/IP五层模型
- ifconfig命令找不到_Linux基本命令