初学 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’。偶尔也会发生文件名、路径的确写错,犯一些低级错误。