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 相关文章推荐
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
使用python实现接口的方法
Jul 07 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
Python读取txt某几列绘图的方法
Oct 14 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python Web版语音合成实例详解
Jul 16 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 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 XML备份Mysql数据库
2009/05/27 PHP
浅析is_writable的php实现
2013/06/18 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
jquery实现简易验证插件封装
2020/09/13 jQuery
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
python使用建议与技巧分享(二)
2020/08/17 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
《乌塔》教学反思
2014/02/17 职场文书
学校课外活动总结
2014/05/08 职场文书
村居抓节水倡议书
2014/05/19 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers