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中函数传参详解
Jul 03 Python
python matlibplot绘制多条曲线图
Feb 19 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
python之pygame模块实现飞机大战完整代码
Nov 29 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 读取文件乱码问题
2010/02/20 PHP
PHP网络操作函数汇总
2015/05/18 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Scrapy的简单使用教程
2017/10/24 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
python判断数字是否是超级素数幂
2018/09/27 Python
python生成器与迭代器详解
2019/01/01 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python中tab键是什么意思
2020/06/18 Python
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
英文留学推荐信范文
2014/01/25 职场文书
数学系个人求职信范文
2014/01/30 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
培训计划通知
2015/07/15 职场文书
python如何正确使用yield
2021/05/21 Python
浅谈Python中的正则表达式
2021/06/28 Python