python新手经常遇到的17个错误分析


Posted in Python onJuly 30, 2014

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 iin 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内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
python MySQLdb使用教程详解
Mar 20 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Python字典对象实现原理详解
Jul 01 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python request使用方法及问题总结
Apr 26 Python
python属于解释语言吗
Jun 11 Python
详解Scrapy Redis入门实战
Nov 18 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 #Python
Python代码的打包与发布详解
Jul 30 #Python
Python中lambda的用法及其与def的区别解析
Jul 28 #Python
python代码制作configure文件示例
Jul 28 #Python
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 #Python
python调用新浪微博API项目实践
Jul 28 #Python
python中的sort方法使用详解
Jul 25 #Python
You might like
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
Yii全局函数用法示例
2017/01/22 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
Python2和Python3中print的用法示例总结
2017/10/25 Python
关于Python数据结构中字典的心得
2017/12/04 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Python属性和内建属性实例解析
2020/01/14 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
金融专业个人求职信
2013/09/22 职场文书
化工操作工岗位职责
2014/04/29 职场文书
淘宝好评语大全
2014/05/05 职场文书
企业标语大全
2014/07/01 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA