好程序员Python
培训分享
Python
编程中常见的异常处理,今天将对
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 unpa免费云主机域名ck 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
,欠拟合了,结果还是不好。所以就是在这样的不断迭代优化的过程中,我们学习的知识模型的泛化能力越来越好。
本篇内容主要讲解“微信小程序如何设计才能受用户喜欢”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程免费云主机域名序如何设计才能受用户喜欢”吧!1、提前调研小程序市场用户 无论企业是想要开发游戏小程序还是商城小…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。