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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
python实现提取百度搜索结果的方法
May 19 Python
Python实现统计文本文件字数的方法
May 05 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
python面向对象 反射原理解析
Aug 12 Python
python小项目之五子棋游戏
Dec 26 Python
浅谈Python协程
Jun 17 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python OpenCV学习笔记
Mar 31 Python
Python合并多张图片成PDF
Jun 09 Python
python字典进行运算原理及实例分享
Aug 02 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
PHP自动生成月历代码
2006/10/09 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
给校长的建议书
2014/03/12 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
铣工实训报告
2014/11/05 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
DE1103使用报告
2022/04/05 无线电