前言
Python 以其简单易懂的语法格式与其它语言形成鲜明对比,初学者遇到最多的问题就是不按照 Python 的规则来写,即便是有编程经验的程序员,也容易按照固有的思维和语法格式来写 Python 代码,之前小编给大家分享过了一篇《Python新手们容易犯的几个错误总结》,但总结的不够全面,最近看到有一个外国小伙总结了一些大家常犯的错误,16 Common Python Runtime Errors Beginners Find,索性我把他翻译过来并在原来的基础补充了我的一些理解,希望可以让你避开这些坑。
0、忘记写冒号
在 if、elif、else、for、while、class、def 语句后面忘记添加 “:”
if spam == 42 print('Hello!')
导致:SyntaxError: invalid syntax
1、误用 “=” 做等值比较
“=” 是赋值操作,而判断两个值是否相等是 “==”
if spam = 42: print('Hello!')
导致:SyntaxError: invalid syntax
2、使用错误的缩进
Python用缩进区分代码块,常见的错误用法:
print('Hello!') print('Howdy!')
导致:IndentationError: unexpected indent
。同一个代码块中的每行代码都必须保持一致的缩进量
if spam == 42: print('Hello!') print('Howdy!')
导致:IndentationError: unindent does not match any outer indentation level
。代码块结束之后缩进恢复到原来的位置
if spam == 42:print('Hello!')
导致:IndentationError: expected an indented block
,“:” 后面要使用缩进
3、变量没有定义
if spam == 42: print('Hello!')
导致:NameError: name 'spam' is not defined
4、获取列表元素索引位置忘记调用 len 方法
通过索引位置获取元素的时候,忘记使用 len 函数获取列表的长度。
spam = ['cat', 'dog', 'mouse']for i in range(spam): print(spam[i])
导致:TypeError: range() integer end argument expected, got list
. 正确的做法是:
spam = ['cat', 'dog', 'mouse']for i in range(len(spam)): print(spam[i])
当然,更 Pythonic 的写法是用 enumerate
spam = ['cat', 'dog', 'mouse']for i, item in enumerate(spam): print(i, item)
5、修改字符串
字符串一个序列对象,支持用索引获取元素,但它和列表对象不同,字符串是不可变对象,不支持修改。
spam = 'I have a pet cat.'spam[13] = 'r'print(spam)
导致:TypeError: 'str' object does not support item assignment
正确地做法应该是:
spam = 'I have a pet cat.'spam = spam[:13] + 'r' + spam[14:]print(spam)
6、字符串与非字符串连接
新闻热点
疑难解答