Python运行的17个时新手常见错误小结


Posted in Python onAugust 07, 2012

1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”)
该错误将发生在类似如下代码中:

if spam == 42 
print('Hello!')

2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax”)
= 是赋值操作符而 == 是等于比较操作。该错误发生在如下代码中:
if spam = 42: 
print('Hello!')

3)错误的使用缩进量。(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”)
记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。该错误发生在如下代码中:
print('Hello!') 
print('Howdy!') 
或者: 
if spam == 42: 
print('Hello!') 
print('Howdy!') 
或者: 
if spam == 42: 
print('Hello!')

4)在 for 循环语句中忘记调用 len() (导致“TypeError: 'list' object cannot be interpreted as an integer”)
通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。要记得返回len 值而不是返回这个列表。
该错误发生在如下代码中:
spam = ['cat', 'dog', 'mouse'] 
for i in range(spam): 
print(spam[i])

5)尝试修改string的值(导致“TypeError: 'str' object does not support item assignment”)
string是一种不可变的数据类型,该错误发生在如下代码中:
spam = 'I have a pet cat.' 
spam[13] = 'r' 
print(spam)

而你实际想要这样做:
spam = 'I have a pet cat.' 
spam = spam[:13] + 'r' + spam[14:] 
print(spam)

6)尝试连接非字符串值与字符串(导致 “TypeError: Can't convert 'int' object to str implicitly”)
该错误发生在如下代码中:
numEggs = 12 
print('I have ' + numEggs + ' eggs.')

而你实际想要这样做:
numEggs = 12 
print('I have ' + str(numEggs) + ' eggs.') 
或者: 
numEggs = 12 
print('I have %s eggs.' % (numEggs))

7)在字符串首尾忘记加引号(导致“SyntaxError: EOL while scanning string literal”)
该错误发生在如下代码中:
print(Hello!') 
或者: 
print('Hello!) 
或者: 
myName = 'Al' 
print('My name is ' + myName + . How are you?')

8)变量或者函数名拼写错误(导致“NameError: name 'fooba' is not defined”)
该错误发生在如下代码中:
foobar = 'Al' 
print('My name is ' + fooba) 
或者: 
spam = ruond(4.2) 
或者: 
spam = Round(4.2)

9)方法名拼写错误(导致 “AttributeError: 'str' object has no attribute 'lowerr'”)
该错误发生在如下代码中:
spam = 'THIS IS IN LOWERCASE.' 
spam = spam.lowerr()

10)引用超过list最大索引(导致“IndexError: list index out of range”)
该错误发生在如下代码中:
spam = ['cat', 'dog', 'mouse'] 
print(spam[6])

11)使用不存在的字典键值(导致“KeyError:‘spam'”)
该错误发生在如下代码中:
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} 
print('The name of my pet zebra is ' + spam['zebra'])

12)尝试使用Python关键字作为变量名(导致“SyntaxError:invalid syntax”)

Python关键不能用作变量名,该错误发生在如下代码中:

class = 'algebra'

Python3的关键字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13)在一个定义新变量中使用增值操作符(导致“NameError: name 'foobar' is not defined”)

不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。

该错误发生在如下代码中:

spam = 0 
spam += 42 
eggs += 42

14)在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在)(导致“UnboundLocalError: local variable 'foobar' referenced before assignment”)
在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。
这意味着你不能在定义它之前把它当全局变量在函数中使用。
该错误发生在如下代码中:
someVar = 42 
def myFunction(): 
print(someVar) 
someVar = 100 
myFunction()

15)尝试使用 range()创建整数列表(导致“TypeError: 'range' object does not support item assignment”)
有时你想要得到一个有序的整数列表,所以 range() 看上去是生成此列表的不错方式。然而,你需要记住 range() 返回的是 “range object”,而不是实际的 list 值。
该错误发生在如下代码中:
spam = range(10) 
spam[4] = -1

也许这才是你想做:
spam = list(range(10)) 
spam[4] = -1

(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)
16)不错在 ++ 或者 -- 自增自减操作符。(导致“SyntaxError: invalid syntax”)
如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。
该错误发生在如下代码中:
spam = 1 
spam++

也许这才是你想做的:
spam = 1 
spam += 1

17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”)
该错误发生在如下代码中:
class Foo(): 
def myMethod(): 
print('Hello!') 
a = Foo() 
a.myMethod()
Python 相关文章推荐
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
Python的UTC时间转换讲解
Feb 26 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
Python 类的私有属性和私有方法实例分析
Sep 29 Python
用Python去除图像的黑色或白色背景实例
Dec 12 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
Pytest mark使用实例及原理解析
Feb 22 Python
python读取pdf格式文档的实现代码
Apr 01 Python
python 学习GCN图卷积神经网络
May 11 Python
Python 代码性能优化技巧分享
Aug 07 #Python
Python正则表达式介绍
Aug 06 #Python
python 实现文件的递归拷贝实现代码
Aug 02 #Python
python实现划词翻译
Apr 23 #Python
Python程序语言快速上手教程
Jul 18 #Python
python 图片验证码代码分享
Jul 04 #Python
Python查询Mysql时返回字典结构的代码
Jun 18 #Python
You might like
PHP下几种删除目录的方法总结
2007/08/19 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
angular分页指令操作
2017/01/09 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
基于keras中的回调函数用法说明
2020/06/17 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
德国自行车商店:Tretwerk
2019/06/21 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
迟到检讨书5000字
2014/01/31 职场文书
经济类毕业生求职信
2014/06/26 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
《确定位置》教学反思
2016/02/18 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL