初学 Python 的十大经典错误及解决办法 (2)
六、 IndexError 索引错误
当访问列表的索引超出列表范围时,就会出现索引错误。
报错信息:
IndexError: list index out of range
错误示例:
a = [1,2,3]
print(a[3])
错误原因:列表 a 中不存在第 4 个索引。列表的索引从 0 开始编号。
解决方法:
通过 len() 函数获取列表的长度,然后判断要访问的索引是否超出列表范围。
七、 UNboundLocalError 未初始化本地变量错误
在函数中,如果对未声明的全局变量进行修改操作,将会遇到这个错误。
报错信息:
UnboundLocalError: local variable 's' referenced before assignment
错误示例:
s = 1
def test():
s += 1
print(s)
test()
错误原因:在函数内对未声明的全局变量 s 进行了自增操作。
Python 将变量 s 视为一个本地的局部变量,但该变量未初始化。
解决方法:
在函数内使用全局变量时,使用 global 关键字对其进行声明即可。
八、 AttributeError 属性错误
报错信息:
AttributeError: 'tuple' object has no attribute 'append'
AttributeError: 'DataFrame' object has no attribute 'col'
错误示例 1:
t = (1,2,3)
t.append(4)
错误原因:元祖不可变。
错误示例 2:
df = pd.read_excel(r'data.xlsx')
df.col
错误原因:DataFrame 没有 col 属性,应该为 columns。
解决方法:
正确书写类的属性名,不要发生书写错误。深刻理解元祖,列表的区别,可将元祖转换为列表添加元素。
九、 ModuleNotFoundError 模块不存在
报错信息:
ModuleNotFoundError: No module named 'pandas'
错误示例 1:
import pandas as pd
没有导入成功,报上面错误。
解决方法:
这种报错常见于两种场景中,第一、未下载、安装该模块;第二、将调用的模块路径与被调用的模块路径不一致等。第一种情况直接下载安装即可,在 cmd 中,pip install xxx;第二种情况电脑中可能存在多个版本的 Python,建议保留一个常用的即可。
十、 FileNotFoundError 文件不存在
报错信息:
FileNotFoundError: File b'E:\test\test_data.csv' does not exist
错误示例:
pd.read_csv('E:\test\test_data.csv')
错误原因:路径中包含’\t’,系统错误地认为是制表符。
解决方法:
在确保该路径下确实存在所写文件后,在读取文件路径前面加’r’,表示只读,作为文件路径读取;或者使用双斜杠’\ ' 来进行转义,形如:‘E:\ \test\ \test_data.csv’。偶尔也会发生文件名、路径的确写错,犯一些低级错误。