Python常见的异常错误整理

  对于初学Python的朋友来说,运行代码总会遇到种种报错,不免烦躁慌乱,总觉得是哪里出了大问题,其实大家不必紧张,针对这些常见的错误类型,我们专门整理了今天这篇文章分享给大家,希望大家能够正确的看待报错,按照提示能够找到错误类型和解决思路。


1、有错误才是正常的

  在程序员的日常工作中,错误几乎每次调试都在发生,例如我们会在输入代码时不小心漏掉或者错误的输入一个标点,就会造成计算机无法准确理解代码的含义。因此在我们大段大段的输入代码时,“笔误”是不可避免的。遇到错误提示无需担心,绝大多数都是可以通过仔细调试来解决的。
  程序员们为了更方便快速的找到发生的问题,大多数编程语言都会在编译器执行程序时加入错误诊断,一旦程序出现错误或者潜在的风险,程序就会被中断执行,并且反馈一个“错误信息”或者“警告信息”提供给编程人员参考。
  但是这种错误信息提示,仅仅能帮助我们判断一个大概的错误类型和有可能的错误位置,并不能每次都可以百分百的提示准确,但可以为我们检查代码提供关注焦点。下面我们就来总结一下在Python中经常遇到的一些错误提示。

2、初学Python常见的错误

先强调一下刚接触Python编程的朋友最常见的一个错误,大家请小心避免:

不要使用中文标点。 括号,引号任何时候都要成对引用。

不要使用中文标点。 括号,引号任何时候都要成对引用。

不要使用中文标点。 括号,引号任何时候都要成对引用。

解决方案:如果觉得自己不是一个特别心思细腻的人,强烈建议不要用搜狗拼音输入法写代码,直接切换成英文输入法


出现了一个错误看不懂提示怎么办?!不要惊慌,这是每个写代码的程序猿都在时时刻刻面对的正常问题。

复制完整的错误提示,百度一下,你不是一个人在犯错。

复制完整的错误提示,百度一下,你不是一个人在犯错 。

复制完整的错误提示,百度一下,你不是一个人在犯错。

遇到我们看不懂的错误提示,首先应该对照我们下面列举的常见错误进行检查,如果发现都不是这些错误,那么可以复制完整的错误信息,在百度进行检索。
通常我们会看到很多人都会犯类似的错误,看看大家的解决方案,一定有一个可以解决你的问题。
遇到错误,对于我们初学者来说不必记清楚每个错误提示要怎么解决,利用网络和搜索引擎,大多数问题可以迎刃而解。


下面开始我们正式列举一些常见的错误。

SyntaxError 类型的错误,
例如

SyntaxError: invalid syntax #无效的语法
SyntaxError: invalid character in identifier #标识符中存在无效字符

这个错误是提示我们语法错误或者代码形式错误。例如我们在使用 if、elif、else、for、while、class、def 语句后面忘记添加 “:”
又或者我们在代码中不小心使用了中文标点,例如中文的句号,冒号,括号。
还有一种可能是我们使用了Python中的关键字作为了变量名。Python3标准库中有33个关键字,我们在使用类名、函数名、变量名的时候要注意避开,关键字如下:
'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'
遇到此类型的错误提示,我们要做的就是检查提示位置的拼写、语法、标点、是否变量名占用关键字等。


IndentationError 类型的错误,
例如

IndentationError: expected an indented block #缩进错误,没有正确的对齐,例如IF语句:后面没有使用缩进
IndentationError: unexpected indent #同一个代码块中的每行代码都必须保持一致的缩进量
IndentationError: unindent does not match any outer indentation level #没有可以匹配的外部无缩进级别。例如代码块结束之后缩进没有恢复到原来的位置

在Python中我们需要严格进行代码缩进,具有相同缩进的代码被视为一个代码块。
对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行需要进行缩进,表示下一个代码块的开始,缩进的结束则表示此代码块的结束。
如果没有进行正确的缩进和取消缩进,则会出现这个类型的错误。


NameError 类型的错误,
例如

NameError: name 'XXX' is not defined #XXX没有进行定义

b = 0
print (a)

例如这段代码中变量a没有被定义,却在打印语句中想要输出a变量,就会报这个错误。
而更常见的情况是我们将变量、函数名或者关键字拼写错误,尤其是大小写的错误。由于错误的拼写导致编译器找不到这个名称,所以同样会提示没有定义的错误。


TypeError 类型的错误,
例如

TypeError: '<'not supported between instances of 'str'and'int' # str实例和int实例之间不支持'<'操作
TypeError: 'str' object does not support item assignment # str实例不支持或不能分配给item类型

这个错误通常是提示传入对象的类型与要求的不符合。
例如字符串一个序列对象,支持用索引获取元素,但它和列表对象不同,字符串是不可变对象,不支持修改。
如下面代码想要把字符串的第13个字符改成r,就会出现此类错误。

a = 'I have a pet cat.'
a[13] = 'r'
print (spam)

3、更多的错误总结

下面是一个更多的错误总结表格,作为初学者,我们无需记住众多的错误类型,遇到异常和错误时,我们要擅长使用网络搜索引擎来解决问题,可以将整行的错误提示复制,在百度中进行搜索,参考大家常用的解决方案,这也是进行错误检查的一个重要方法。

异常名 解释
IOError 输入输出异常
AttributeError 试图访问一个对象没有的属性
ImportError 无法引入模块或包,基本是路径问题
IndentationError 语法错误,代码没有正确的对齐
IndexError 下标索引超出序列边界
KeyError 试图访问你字典里不存在的键
SyntaxError Python代码逻辑语法出错,不能执行
NameError 使用一个还未赋予对象的变量
KeyboardInterrupt Ctrl+C被按下,键盘终止输入
UnboundLocalError 试图访问一个还未被设置的局部变量
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
OSError 操作系统执行错误
TypeError 传入对象的类型与要求的不符合
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343