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中的is和id用法分析
Jan 26 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
python实现ID3决策树算法
Dec 20 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python中的集合介绍
Jan 28 Python
Python实现程序判断季节的代码示例
Jan 28 Python
django 自定义过滤器的实现
Feb 26 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
对Django 转发和重定向的实例详解
Aug 06 Python
Python sep参数使用方法详解
Feb 12 Python
Pytorch转tflite方式
May 25 Python
python 写一个性能测试工具(一)
Oct 24 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(4) php 函数 补充2
2010/02/15 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
python实现udp传输图片功能
2020/03/20 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Django websocket原理及功能实现代码
2020/11/14 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
公证委托书
2014/08/01 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书