学python2还是学python3_新手学习python2还是python3?详细区别讲解

0caa2574e73a3c23e9114c95bf7815f9.png

python2和python3的版本,目前主要分为两类:

Python 2.x的版本,被称为Python2,目前最新版是2.7.18

Python 3.x的版本,被称为Python3,目前最新版是3.9.1

从Python2到Python3是一个大版本升级,两者之间有很多地方互不兼容。

使用时当然选择越新的Python版本越好,版本越老的代码越难维护。

维护老版本的代码时,需要了解各版本之间的主要差异。有时看到一些代码的语法特点,可以大致猜出它是什么版本

Python2和Python3之间的变化主要在以下几个方面

1.print函数:

Python 2:print是语句print "Hello World!"

# 结果:Hello World!

Python 3:print是函数print('Hello World!')

# 结果:Hello World!

print 'Hello World'

# 结果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

2.整数相除:

Python 2:3/2的结果是整数print 3 / 2

# 结果:1

print 3 / 2.0

# 结果:1.5

Python 3:3/2的结果是浮点数print(3 / 2)

# 结果:1.5

print(3 / 2.0)

# 结果:1.5

3.Unicode:

Python 2:有两种字符串类型:str和unicodea = '您好'

print a

# 结果:SyntaxError: Non-ASCII character '\xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

# 在Python 2中,如果代码中包含非英文字符,需要在代码文件的最开始声明编码# _*_ coding:utf-8 _*_

a = '您好'

print a

# 结果:您好

Python 3:字符串默认就是Unicodea = '您好'

print(a)

# 结果:您好

Python 3中的str相当于Python 2中的unicode

4.异常处理:

Python 2:try:

result = 1 / 0

print result

except ZeroDivisionError, e:

print str(e)

# 结果:integer division or modulo by zero

或try:

result = 1 / 0

print result

except ZeroDivisionError as e:

print str(e)

# 结果:integer division or modulo by zero

Python 3:只支持as关键字try:

result = 1 / 0

print(result)

except ZeroDivisionError as e:

print(str(e))

# 结果:division by zero

5.xrange:

Python 2:有 range 和 xrange 两个方法

区别:

range返回一个list,在被调用的时候即返回整个序列

xrange返回一个iterator,在每次循环中生成序列的下一个数字# range

print range(4)

# 结果:[0, 1, 2, 3]

# xrange

print xrange(4)

# 结果:xrang(4)

Python 3:不再支持 xrange 方法print(range(4))

# 结果:range(0, 4)

for i in range(4):

print(i, end=' ')

# 结果:0 1 2 3

Python 3中的 range 方法就相当于 Python 2中的 xrange 方法

6.map函数:

Python 2:map函数返回listprint map(lambda x: x+1, range(5))

# 结果:[1, 2, 3, 4, 5]

Python 3:map函数返回iteratorprint(map(lambda x: x+1, range(5)))

# 结果:

print(list(map(lambda x: x+1, range(5))))

# 结果:[1, 2, 3, 4, 5]

filter函数在Python 2和Python 3中也是同样的区别

7.不支持has_key:

Python 2:my_dict = {"age": 30, "name": "Zhang San"}print my_dict.has_key("age")print "age" in my_dict

# 结果:True#      True

Python 3:my_dict = {"age": 30, "name": "Zhang San"}print("age" in my_dict)

# 结果:True

print(person.has_key("age"))

# 结果:AttributeError: 'dict' object has no attribute 'has_key'

以上就是两个版本的差异了,新入门的同学建议学习Python3,这是以后发展的趋势。正在学习Python2的同学也不要着急,记住上面的知识点就可以快速上手Python3啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值