前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python开发,请避开这些坑!

Python开发,请避开这些坑!

作者头像
昱良
发布2019-07-04 16:32:33
4720
发布2019-07-04 16:32:33
举报
文章被收录于专栏:机器学习算法与Python学习

学习Python和网络爬虫

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

1. 忘记写冒号

在 if、elif、else、for、while、class、def 语句后面忘记添加“:”

代码语言:javascript
复制
if spam == 42
    print('Hello!')

2. 误用 “=” 做等值比较

“=”是给变量赋值,“==”才是判断两个值是否相等:

代码语言:javascript
复制
score = 60
if score = 60:
    print ('passed')

改正:

代码语言:javascript
复制
score = 60
if score == 60:
    print ('passed')

3. 变量没有定义:

代码语言:javascript
复制
if age >= 18:
    print ('adult')
print ('END')

会导致:NameError: name ‘age’ is not defined.

改正:

代码语言:javascript
复制
age = 20
if age >= 18:
    print ('adult')
print ('END')

4. 字符串与非字符串连接

错误:

代码语言:javascript
复制
num = 12
print('I have ' + num+ ' apples.')

非字符串和字符串连接的时候,要将非字符串转换为字符串类型之后才能连接,改正:

代码语言:javascript
复制
num = 12
print('I have ' + str(num)+ ' apples.')

5. 列表的索引位置

习惯性地认为列表元素的位置是从1开始的:

代码语言:javascript
复制
spam = ['cat', 'dog', 'mouse']
print(spam[3])

列表元素的位置是从0开始的,所以第3个元素“mouse”的索引位置是2,改正:

代码语言:javascript
复制
spam = ['cat', 'dog', 'mouse']
print(spam[2])

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

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

代码语言:javascript
复制
spam = 0
spam++

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

代码语言:javascript
复制
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 函数来获取列表的长度:

代码语言:javascript
复制
fam = ['dad', 'mom', 'son']

for i in range(fam):

print(fam[i])

改正:

代码语言:javascript
复制
fam = ['dad', 'mom', 'son']

for i in range(len(fam)):

print(fam[i])

9. 函数中的局部变量赋值前被使用

代码语言:javascript
复制
num = 42

def myFunction():
    print(num)
    num = 100

myFunction()

第一行定义了一个全局变量num,同时函数myFunction( )也定义了一个同名的局部变量,但程序执行时是先查找局部变量的,所以在函数中找到num之后就不到外部查找了,此时就会出现print的时候变量num还没赋值的错误。

10. 缩进问题

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

常见的错误用法:

(1)

代码语言:javascript
复制
print('Hello')
    print('World!')

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

代码语言:javascript
复制
print('Hello')
print('World!')

(2)

代码语言:javascript
复制
if spam == 42:
    print('Hello')
  print('World!')

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

代码语言:javascript
复制
if spam == 42:
    print('Hello')
    print('World!')

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

代码语言:javascript
复制
if spam == 42:
    print('Hello')

print('World!')

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

你在学习Python的过程中掉过哪些坑,欢迎留言参与讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 忘记写冒号
  • 2. 误用 “=” 做等值比较
  • 3. 变量没有定义:
  • 4. 字符串与非字符串连接
  • 5. 列表的索引位置
  • 6. 使用自增 “++” 自减 “—”
  • 7. 使用关键字命名变量
  • 8. 索引元素位置时忘记调用 len 方法
  • 9. 函数中的局部变量赋值前被使用
  • 10. 缩进问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档