新手常见的5个Python错误
Python作为比较便于编写的编程语言之一,已经愈发受编程者们的欢迎。其集成开发环境(IDE)也有很多可供选择,例如Pycharm,Visual Studio,Jupyter笔记本等。无论选择哪种IDE,都可能会遇到一些错误。这些错误和问题的发生主要是由于判断失误,对特定主题缺乏深入的知识,或者仅仅可能是不小心导致的。
本篇文章总结了一些初学者常犯的5种错误,这些错误虽然特别简单,但是对于初学者来说可能会浪费比较多的时间在上面。而且由于每个人的编程习惯不同,错误状态百出,有时候也不是能从网上直接搜索到错误原因。我们还将讨论打印的错误类型,并了解原因以及如何避免出现特殊错误。
1. 缩进Indentation
缩进是指代码行或代码块开头的空格数。常用在if-else、with语句或者函数之后。通常用空格键或四个空格键缩进一次,或按一次Tab键。其在python中格外重要,可以替代其他编程语言(如C,C ++或Java)中的花括号“ {}”之类的东西。
常见的缩进错误有:
当忘记在函数或代码块的起始行中缩进时,会触发下列错误:
IndentationError: expected an indented block
当代码块或程序中应有缩进但未缩进时,会出现此错误。比如当在所需的代码块中提供两个空格,并且该特定行的描述不适合整个代码时,会触发下列错误:
IndentationError: unindent does not match any outer indentation level
代码的其中一行没有和其他缩进对齐,会触发下列错误:
IndentationError:unexpected indent
很多初学者开始学习Python时,往往会根据网站或者视频上的代码,如果盲目复制粘贴,也会发生这些错误。解决此问题的主要方法是,确保您在间距上保持一致,并通过查看每个发生的错误的描述来解决每个问题。
Trick: 尽量少使用空格,统一使用Tab键。
2. 文件名和模块名冲突
如果我们编写了一个开发脚本,保存时对其进行命名的名称和脚本中import的模块名称一致,就会触发此错误。此错误会触发ImportError,因为命名的.py文件将替换实际的现有库模块。因此,当尝试在运行模块时调用该函数时,它根本不起作用。在下面的示例中,我们将文件另存为gtts.py:
from gtts import gTTS
import ostext = “Hello, Python”
s = gTTS(test)
s.save(“my_music.mp3”)os.system(“my_music.mp3”)
ImportError:cannot import name 'gTTS' from 'gtts'
该错误其实很容易解决:只要我们避免将该脚本的名称命名为gtts.py即可。如果我们非常想使用该名称(比如感觉这个名称更能直观的看出来脚本的作用),不妨将其命名为my_gtts.py或者gtts1.py等等。
3. 用错括号
在Python中主要有三种类型的括号,每种都有特定的用途。方括号“ []”用于列表和索引,花括号“ {}”用于字典或集合,括号“()”用于元组。初学者常常会混淆使用正确的括号,从而导致可能发生的一些错误。
声明列表的其中一种方法是a = [];另一种方法是a = list()。但是如果不小心搞混了上面两种的使用,例如使用a = list[],就会出现如下语法错误。
SyntaxError:invalid syntax
在处理列表或元组的索引时,我们总是使用方括号“ []”。使用类似于x = [1, 2, 3]的列表或类似于x =(1, 2, 3)的元组时,以x(1)的形式写入索引将导致以下错误。
TypeError:'list' object is not callable
或者
TypeError:'tuple' object is not callable
Trick: 确保始终使用方括号“ []”来获取特定索引的值。例如:可以使用x [1],将返回值2。
4. 对Numpy格式的数据获取形状时使用括号
这种错误和上一个错误非常相似,在机器学习的使用过程中,我们常使用numpy这个模块。这是一个非常简单的模块,矩阵的概念我们从大学到现在也学习了太多次。但是需要注意的是:numpy中的shape是属性而不是函数,调用后将返回一个由numpy数组的形状组成的元组。示例错误如下:
import numpy as npa = np.zeros((5, 6))
a.shape()
这将触发以下错误:
TypeError:'tuple' object is not callable
Trick: 仅使用不带括号的a.shape。
5.局部变量和全局变量
局部变量是在特定代码块或代码语句中定义的变量。该局部变量只能在该特定代码块内访问,而不能在其他地方访问。形式参数标识符也充当局部变量,这些也是在函数中定义为虚拟变量的变量。
全局变量是在主程序中定义的变量,而不是在函数或特定代码中定义的变量。在整个程序中都可以访问此变量。
如果我们在主程序中使用局部变量时就会触发类似下面的名称错误:
NameError:name 'face_name' is not defined
Trick: 尽量少使用全局变量,坚持使用代码块中的局部变量,如果想在整个程序中使用该变量,请先使用全局变量对其进行定义。
结论
本文介绍了很多开始使用Python和机器学习时犯的5个最常见的错误。其实有时候我今天也会不小心烦这些错误,有时候甚至觉得自己真的很“蠢”。对于初学者来说,希望我们都可以熟悉这些错误发生的原因,以及如何避免这些问题。不要被这些简单的错误打击信心从而产生挫败感~你们只是还没有熟悉Python语言~
· END ·
RECOMMEND
推荐阅读
1. 深度学习——入门PyTorch(一)
2. 深度学习——入门PyTorch(二)
3. PyTorch入门——autograd(一)
4. PyTorch入门——autograd(二)
5. PyTorch入门——autograd(三)
新手常见的5个Python错误相关推荐
- python 混淆矩阵_新手常见的5个Python错误
Python作为比较便于编写的编程语言之一,已经愈发受编程者们的欢迎.其集成开发环境(IDE)也有很多可供选择,例如Pycharm,Visual Studio,Jupyter笔记本等.无论选择哪种ID ...
- 复制的python代码格式错误_新手常见6种的python报错及解决方法
此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们. 1.NameError变量名错误 报错: ...
- Python运行的17个时新手常见错误小结
Python运行的17个时新手常见错误小结 1 发布时间:『 2017-11-04 11:20 』 帖子类别:『人工智能』 阅读次数:8803 (本文『Python运行的17个时新手常见错误 ...
- python错误-新手常见Python错误及异常解决处理方案
写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...
- Python新手常见错误汇总|附代码检查清单
写代码,出错在所难免,关键是如何快速定位错误,解决bug.错误提示,有时候并不能提供有效信息,尤其是编程新手,常常会犯一些低级错误,比如缩进不对,引号缺失,括号不全等,下面是新手常犯的一些代码错误,希 ...
- python写错了怎么撤回_python新手常见错误汇总
对于新手,初学Python时,总会遇到这样那样的报错,想要弄懂Python错误信息的含义可能还不知道怎么做,这里列出了一些比较常见的Python报错问题,希望对于学习Python的人能够有些帮助. 1 ...
- 怎么解决python遇到问题_新手常见Python错误及异常解决处理方案
新手常见Python错误及异常解决处理方案,异常,错误,语句,子句,代码 新手常见Python错误及异常解决处理方案 易采站长站,站长之家为您整理了新手常见Python错误及异常解决处理方案的相关内容 ...
- Python老司机总结新手常见10大错误
作为python的新手,大家在上手python的时候都会或多或少的接触到一些rookie mistake,也就是菜鸟级别的错误.小编作为一个老司机也是从这些错误中一点一点的积累经验,才慢慢的能够熟练的 ...
- python错误类型翻译_17个新手常见的Python运行时错误
原标题:17个新手常见的Python运行时错误 来源 | inventwithPython 翻译 | OSChina.net 当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点 ...
最新文章
- 【机器学习】特征提取代码汇总
- 设计模式之开放封闭原则
- LeetCode 1160. 拼写单词
- oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint
- 微课|中学生可以这样学Python(例11.4):tkinter版图片查看器
- 银行突发事件演练方案_【工作动态】准旗联社组织开展优质文明服务应急演练,为优质服务保驾护航!...
- vba ado返回集合_利用VBA代码导出工作表中的图片
- php中的print r与echo,php中echo(),print(),print_r()的区别
- Vagrant 构建 LNMP 一致环境
- (0)C#开发环境构建——史上最容易理解的C#界面搭建
- Ubuntu 18.04 通过 ufw route 配置网关服务器
- wpf 自动完成comboxBox
- 搭建高性能计算环境(九)、应用软件的安装之gaussian 09
- 独立安装 lamp 兄弟连
- 基于FPGA的RS232异步串行口IP核设计
- WordPress二次元博客主题模板-Sakurairo v2.5.1.1
- 一文搞懂K-means聚类算法
- 关于runtime error '429'解决方案
- Java代码签名证书申请和使用指南
- button控件具体用法(CommandName, CommandArgument)