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中内建函数的简单用法说明
May 05 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
MySQL适配器PyMySQL详解
Sep 20 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
Python运行DLL文件的方法
Jan 17 Python
TensorFlow tensor的拼接实例
Jan 19 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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合并数组+与array_merge的区别分析
2010/08/01 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
javascript call方法使用说明
2010/01/11 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
React实现全选功能
2020/08/25 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
怎样客观的做好自我评价
2013/12/28 职场文书
校庆接待方案
2014/03/18 职场文书
生物学专业求职信
2014/07/23 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
委托书范本格式
2019/04/18 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android