更多课程 选择中心


Python培训

400-111-8989

Python编程中的常见异常

  • 发布:Python培训
  • 来源: 键客成长之路
  • 时间:2019-11-19 14:47

今天将对python编程中经常会遇到的一些报错与异常的进行总结与分析,虽然不会面面俱到,但是可以提供一种面对这样的问题时的思考方法,会对python的编程能力的提高有所帮助。

初学python经常会遇到的一些错误:

下面错误类型的先后顺序基本上是按照从0到有一定基础的过程会遇到的一些报错问题:

NameError:在刚开始接触编程的朋友,容易犯这个错误,没有声明定义对应引用的变量,即,你来了一个无中生有。找到对应的变量,声明即可。

SyntaxError:这个出错,都是语法类型的错误,例如多个半括号,少个半括号,for循环时,末尾忘记英文冒号等等。出现这个错误,说明你对python的语法很不熟悉,多练习就是。

IndentationError:缩进不正确,python语法不熟练的明显表现,采用tab键进行缩进比较比较方便,例外科普一个小技巧,在jupyter中如果要对一堆代码进行批量缩进时,选中这堆代码,按tab来进行缩进,按shift+tab代码整体前进。

ImportError:开始出现这个错误,说明你有了一丢丢基础,开始要调包了。但是还不是很熟练python中第三方包的使用方法。这里具体说一下每一种方法的差异,就拿最常见的pandas来举例

import pandas as pd

导入pandas包,记为 pd。后续需要调用pandas库底下的子函数API时,这样操作:pd.read_csv 此时我们调用pandas下的一个文件读取函数read_csv,它支持许多格式的文件的读取,例如,csv,tsv,txt等等,具体需要去探究。

还有一种是:

from pandas import *

这个是导入pandas一级下属的所有API接口,相当于把pandas的一堆工具散乱的扔给你,一是占空间,二是用起来你得记住对应的函数才行,而第一种可以采用tab补全的方法,知道API接口大概拼写即可。

还有一种:

from pandas import read_csv, concat

这个就比较简洁,只把自己需要的拿出来即可,在调用特别大的包的时候,这种方法比较好,例如sklearn,很少有见 import sklearn as sl 吧,就像一直负重前行。在知道自己具体要用哪几个API的情况下,这种最优。

TypeError:这个类型的错误慢慢开始由于一些有些复杂的原因引起。例如:

TypeError : argument of type 'int' is not iterable 此处是因为int不可迭代。

TypeError: cannot unpack non-iterable int object 此处是循环的变量中的元素不是一个可以。这一类型的错误需要你对python有一些掌握,例如dict的key是不可重复的等等,需要在错误中累积这一类的知识。

MoudleNotFoundError:就是你导入的包当前是木有的,这里顺便说一下各种下载包的方式,首先就是在编译器里,此操作不论是在Windows下还是公司的Linux下都可以这样:!pip install module_name 感叹号为英文的

但是如果是阿里云,腾讯云,百度的ai-stduio这种云服务器的话,需要做一定的改变:!pip install --user module_name 这个是一个小tip。个人有一种预感,以后云服务器会越来越普及,至少是在大数据算法爱好者中,Windows的,数据量稍微大一点,动不动就跑的死机,云服务器则不存在这个问题,而且现在慢慢开始有了限时免费的云服务器,再往以后可能就会像流量这样便宜,那是一个遥远的梦想,哈哈。

ValueError:这个通常是在对一个数据容器进行拆解的时候,拆出来的元素个数与赋值的变量个数不匹配,例如:

a,b,c = ['1','1','1','1'] 里面四个元素,外面配三个变量,肯定报错

ValueError: too many values to unpack (expected 3)

当然还有其他的原因造成ValueError,例如:

ValueError: The truth value of a Series is ambiguous

ZeroDivisionError:这个就是你在做除法时,除数为0所致,python2与python3的除法有所不同,有时候容易犯这个错误。python2的只是取整数部分,不四舍五入,例如:

a=0.6

1/a 在python2中是会报错的。其他情况下报这个错,就需要检查一下你的对应变量的精度设置了,并且在循环指定条件逐步对某一初始为0的变量进行迭代累加的时候,也容易出现这个错误,例如,在机器学习算法或者推荐算法的召回率,准确率时,计算hit,数据质量较差时就容易出现这个问题。

IndexError:索引出错了,超出范围。

IndexError: list index out of range

KeyError:出现KeyError,基本说明你开始会用python了,因为字典dict是python中应用最为广泛的数据存储容器,学会字典的各种操作很重要。

FileNotFoundError:可能是在你开始采用python进行一些数据分析预测,或者推荐算法,或者nlp或者cv什么的时候,文件的路径或者文件格式,文件名出错导致文件找不到。

AttributeError:说通俗一些,就是某个数据结构或者类型没有某种操作,你却非要用这种操作,那就要报错了,例如:

AttributeError: 'tuple' object has no attribute 'remove'出现这样的错误的时候,说明对python各种东西学习的有些多,混淆了一些操作。例如list的元素添加是append,你非要用update来给list添加,而update是set或者dict的,如下:

AttributeError: 'list' object has no attribute 'update'

MemoryError:开始遇到这个错误的时候,说明你的python基础基本掌握,就是在你在处理一个比较大的数据集的时候,你的程序太low,例如,各种循环,嵌套循环,电脑被你玩蒙圈了,内存不足。这个说明一点,要开始学习python的数据结构与算法了,正式开始难点了。一些像小顶堆,大顶堆,二叉树,动态规划,链表,队列的家伙开始出现在你的视野里,并且开始看不懂一些诡异的很巧妙的小算法。

所以这就验证了一个说法,python入门容易,但请看清楚了,仅仅是入门容易,你不能一直站在门口吧,往里面走一点,你就要费点劲。因此,需要进一步去巩固基础的东西,这些日常的报错异常只是在反馈你的bug,自己的学习过程也是一个机器学习的train与test的过程,学到东西开始用习题拟合,如果习题都是你做过的,抱歉,过拟合了,当上test的时候,你的正确率就大幅下降,你就需要修正你的训练集了;如果你是个懒家伙,习题没做几个,就直接上test,欠拟合了,结果还是不好。所以就是在这样的不断迭代优化的过程中,我们学习的知识模型的泛化能力越来越好,可以做到,一马平川。也不说期待那一天,扎扎实实做好每天的学习,那一天顺其自然。

本文内容转载自网络,本着分享与传播的原则,版权归原作者所有,如有侵权请联系我们进行删除。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python培训笔记-迭代器
下一篇:Python培训笔记-ZIP与ZIP(*)函数的意义​

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省