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 OS模块常用函数说明
May 23 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
python版简单工厂模式
Oct 16 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
浅谈Python中的继承
Jun 19 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
详解Python中的for循环
Apr 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的一个登录的类 [推荐]
2007/03/16 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
PHP在线书签系统分享
2016/01/04 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python实现Floyd算法
2018/01/03 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Pygame框架实现飞机大战
2020/08/07 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
商务英语邮件开头问候语
2015/11/10 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
详解Python中的for循环
2022/04/30 Python