变量名错误是最普通也是最常会遇到的内建报错类型,经常会出现在Python变量命名上,如果找不到变量就会引发NameError。关于变量名的规则,需要牢记以下几条:
-
变量名只能包含字母、数字和下划线,不可用数字开头;
-
变量名不能包含空格,但可使用下划线来分隔其中的单词;
-
不要将Python关键字和函数名用作变量名,如print;
-
变量名应既简短又具有描述性;
-
慎用小写字母l和大写字母O,因为容易被错看成数字1和0。
出现变量名错误,可以查看变量是否赋值,是否存在大小写不统一或者变量名写错了的情况,找到后加以修正。
错误示例
错误原因:变量名拼写错误,误将massage拼写为masge
报错信息:NameError: name 'mesage' is not defined
索引错误(IndexError)
索引是项目在数组或列表中的位置,当我们尝试从列表中访问元素或从列表中不存在的索引中访问元组时,就会发生这种异常。
例如,有一个包含10个元素的列表,索引在0到9之间,如果试图访问索引10或11或更多的元素,就会产生IndexError。
错误示例
错误原因:列表a中不存在第4个索引,列表的索引从0开始编号
报错信息:IndexError: string index out of range
键错误(KeyError)
在读取字典中的key和value时,如 果key不存在,就会触发KeyError错误。
错误示例
错误原因:键‘f’不存在
报错信息:KeyError: 'f'
类型错误(TypeError)
在程序中使用不正确或不受支持的对象类型时,会引发该错误。如果尝试调用不可调用的对象或通过非迭代标识符进行迭代,也会引发此错误。
错误示例
错误原因:在使用“+”做拼接的时候,必须使用字符串,或者 把数字用str()函数转化成字符串
报错信息:TypeError:can only concatenate str(not"int")to str
属性错误(AttributeError)
特性引用和赋值失败时会引发属性错误。
此类错误的原因是尝试访问未知的对象属性,换句话说就是找不到对应对象的属性。可以检查类中构造函数__init__()是否写正确,左右两边各两条下划线。