python语言尽管精简、灵活、易用,但是,像所有编程语言一样,错误总会发生,关键不在于如何避免,而是如何发现错误,以及快速纠正错误。在这方面,python再一次显示了它的强大,通过定义一系列常见异常类,通过异常类的说明,就能很快确定错误在何时何地发生,以及如何处理。本章节通过一些常见异常类介绍,使大家能对一些常见错误进行快速排查。
1.IndentationError缩进错误2.SyntaxError语法错误3.NameError未命名错误(名称没有声明)4.AttributeError对象没有这个属性5.ValueError值转换错误6.TypeError对类型无效的操作7.IndexError序列中没有此索引(index)8.KeyError字典key值读取错误8.ImportError导入模块/对象失败9.ModuleNotFoundError:没有找到要导入的模块10.PermissionError权限被拒绝:错误产生的原因是文件无法打开11.FileNotFoundError文件未找到12.UnicodeDecodeError解码时的错误13.DeprecationWarning关于被弃用的特征的警告
1.IndentationError缩进错误缩进错误,顾名思义,就是段落缩进出现错误。python语言强调格式对齐,通过格式来判断代码块,而不是C语言的“{}”,这就使得初学python极其容易出现IndentationError缩进错误。看下面例子:
代码print()函数前面有几个空格,我们看在vscode源码里面,print前面出现了小波浪,表示格式错误。代码运行区域,上面显示出错误文件位置,“line6”,表示第六行代码,接下来显示错误类型及详细情况:IndentationError:unexpectedindent(缩进错误)。当我们把print前面空格删除时,错误就没了。
2.SyntaxError语法错误SyntaxError语法错误,常是一些由于书写错误,或者版本升级导致。看下面例子:
再看下面例子:
因为“if”写成了“iif”,触发syntaxError错误,下面明确提示错误位置及类型。例外,标点符号写成中文标点,以及标点符号书写错误,也是容易触发syntaxError错误。
3.NameError未命名错误(名称没有声明)NameError未命名错误,一些变量名,函数名,类名未声明就直接在代码里使用,就会触发NameError错误。看下面代码:
NameError未命名错误代码中将“量子股票”误写成“量子股市”,触发NameError错误,因为“量子股市”是未声明变量。4.AttributeError对象没有这个属性AttributeError属性错误,一般引用对象不存在的属性时触发。看下面例子:
AttributeError属性错误股票日线类,没有定义“成交价”这一属性,后面引用它就会触发AttributeError错误。5.ValueError值转换错误ValueError值转换错误,有多种情况会触发这一错误。最常见的是数据类型转换,比如下面:
5.ValueError值转换错误收盘价为数字可转换为float型,但含有字母的字符串无法转换,触发ValueError错误。还有其他几种情形触发这种错误,在我们量化分析股市中不常见,这里就不一一介绍了。