和其他语言的语法最大的不同就是, Python 不能用括号来表示语句块, 也不能用开始或结束标志符来表示, 而是靠缩进来区分代码块的.
1. 忘记写冒号
在 if,elif,else,for,while,class,def 语句后面忘记添加 ":"
- if spam == 42
- print('Hello!')
2. 误用 "=" 做等值比较
"=" 是给变量赋值,"==" 才是判断两个值是否相等:
- score = 60
- if score = 60:
- print ('passed')
改正:
- score = 60
- if score == 60:
- print ('passed')
3. 变量没有定义:
- if age>= 18:
- print ('adult')
- print ('END')
会导致: NameError: name 'age' is not defined.
改正:
- age = 20
- if age>= 18:
- print ('adult')
- print ('END')
4. 字符串与非字符串连接
错误:
- num = 12
- print('I have' + num+ 'apples.')
非字符串和字符串连接的时候, 要将非字符串转换为字符串类型之后才能连接, 改正:
- num = 12
- print('I have' + str(num)+ 'apples.')
5. 列表的索引位置
习惯性地认为列表元素的位置是从 1 开始的:
- spam = ['cat', 'dog', 'mouse']
- print(spam[3])
列表元素的位置是从 0 开始的, 所以第 3 个元素 "mouse" 的索引位置是 2, 改正:
- spam = ['cat', 'dog', 'mouse']
- print(spam[2])
6. 使用自增 "++" 自减 "-"
学过 c 语言或者 Java 的人会很习惯使用 i++ 或者 i-, 但在 Python 中是没有自增自减操作符的:
spam = 0
spam++
这时可以使用 "+=" 来代替 "++", 改正:
- spam = 0
- spam += 1
7. 使用关键字命名变量
Python 3 中一共 33 个关键字:
False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield
自定义变量时, 变量名不能和这些关键字重复.
8. 索引元素位置时忘记调用 len 方法
通过索引位置来获取列表元素时, 忘记要先使用 len 函数来获取列表的长度:
- fam = ['dad', 'mom', 'son']
- for i in range(fam):
- print(fam[i])
改正:
- fam = ['dad', 'mom', 'son']
- for i in range(len(fam)):
- print(fam[i])
9. 函数中的局部变量赋值前被使用
- num = 42
- def myFunction():
- print(num)
- num = 100
- myFunction()
第一行定义了一个全局变量 num, 同时函数 myFunction( )也定义了一个同名的局部变量, 但程序执行时是先查找局部变量的, 所以在函数中找到 num 之后就不到外部查找了, 此时就会出现 print 的时候变量 num 还没赋值的错误.
10. 缩进问题
和其他语言的语法最大的不同就是, Python 不能用括号来表示语句块, 也不能用开始或结束标志符来表示, 而是靠缩进来区分代码块的.
常见的错误用法:
- (1)
- print('Hello')
- print('World!')
错误是第二行的缩进会导致两个 print 语句是包含和被包含的关系, 但他们两者是属于同一个代码块的, 所以应该写成;
- print('Hello')
- print('World!')
- (2)
- if spam == 42:
- print('Hello')
- print('World!')
错误是第三行的缩进, 改正的方法有两种, 一是如果两个 print 语句是属于同一代码块的, 应该改正为
- if spam == 42:
- print('Hello')
- print('World!')
二是如果第三行的 print 语句是和 if 语句是同一级的, 则改正为
- if spam == 42:
- print('Hello')
- print('World!')
(3)在 Python 3 中, 缩进的时候, 不能 Tab 和空格混用, 每个缩进层次应该选择只使用 Tab 或者只使用空格.
来源: http://developer.51cto.com/art/201809/584341.htm