分享

Python中最容易掉进去的10个坑

 静幻堂 2018-09-06
程序猿IT 2018-09-04 14:55:47

优效学院,大数据,人工智能,Java,架构,在线教育


相比于其他语言,Python中的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里。

忘记写冒号

在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:未定义名称'age'。

改正:

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个元素“鼠标”的索引位置是2,改正:

spam = ['cat', 'dog', 'mouse']
print(spam[2])

6.使用自增“++”自减“ - ”

学过ç语言或者Java的的人会很习惯使用我++或者异,但在Python的中是没有自增自减操作符的:

spam = 0
spam++

这时可以使用“+ =”来代替“++”,改正:

spam = 0
spam += 1

7.使用关键字命名变量

Python 3中一共33个关键字:

假,无,真,和,如,断言,突破,阶级,继续,闪避,德尔,ELIF,否则,除了最后,对于来自全球,如果进口,在,是,λ,外地,不,或者,传球,养,返回,尝试,同时,有,产量

自定义变量时,变量名不能和这些关键字重复。

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之后就不到外部查找了,此时就会出现打印的时候变量NUM还没赋值的错误。

10.缩进问题

和其他语言的语法最大的不同就是,Python中不能用括号来表示语句块,也不能用开始或结束标志符来表示,而是靠缩进来区分代码块的。

常见的错误用法:

(1)

print('Hello')
print('World!')

错误是第二行的缩进会导致两个打印语句是包含和被包含的关系,但他们两者是属于同一个代码块的,所以应该写成;

print('Hello')
print('World!')

(2)

if spam == 42:
print('Hello')
print('World!')

错误是第三行的缩进,改正的方法有两种,一是如果两个打印语句是属于同一代码块的,应该改正为

if spam == 42:
print('Hello')
print('World!')

二是如果第三行的打印语句是和,如果语句是同一级的,则改正为

if spam == 42:
print('Hello')
print('World!')

(3)在Python 3中,缩进的时候,不能Tab和空格混用,每个缩进层次应该选择只使用Tab或者只使用空格。

你在学习的Python的过程中掉过哪些坑,欢迎留言参与讨论。需要资料的联系作者。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多