当前位置: 首页 > 图灵资讯 > 行业资讯> 新手学习python2还是python3?详细区别讲解

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

来源:图灵python
时间: 2024-09-18 17:08:24
目前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"HelloWorld!"
#结果:HelloWorld!

Python 3:print是函数

print('HelloWorld!')
#结果:HelloWorld!
print'HelloWorld'
#结果:SyntaxError:Missingparenthesesincallto'print'.Didyoumeanprint('HelloWorld')?

2.整数相除:

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

print3/2
#结果:1
print3/2.0
#结果:1.5

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

print(3/2)
#结果:1.5
print(3/2.0)
#结果:1.5

3.Unicode:

Python 2:字符串有两种类型:str和unicode

a='您好'
printa
#结果:SyntaxError:Non-ASCIIcharacter'\xe6'infile...,butnoencodingdeclared;seehttp://python.org/dev/peps/pep-0263/fordetails
#在Python2中,如果代码中包含非英文字符,需要在代码文件的开头声明编码#_*coding:utf-8_*_
a='您好'
printa
#结果:您好

Python 3:字符串默认为Unicodee

a='您好'
print(a)
#结果:您好

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

4.异常处理:

Python 2:

try:
result=1/0
printresult
exceptZeroDivisionError,e:
printstr(e)
#结果:integerpisionormodulobyzero

try:
result=1/0
printresult
exceptZeroDivisionErrorase:
printstr(e)
#结果:integerpisionormodulobyzero

Python 3:只支持as关键字

try:
result=1/0
print(result)
exceptZeroDivisionErrorase:
print(str(e))
#结果:pisionbyzero

5.xrange:

Python 2:有 range 和 xrange 两个方法

区别:

range返回list,并在被调用时返回整个序列

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

#range
printrange(4)
#结果:[0,1,2,3]
#xrange
printxrange(4)
#结果:xrang(4)

Python 3:不再支持 xrange 方法

print(range(4))
#结果:range(0,4)
foriinrange(4):
print(i,end='')
#结果:0123

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

6.map函数:

Python 2:返回listlistmap函数

printmap(lambdax:x+1,range(5))
#结果:[1,2,3,4,5]

Python 3:map函数返回iterator

print(map(lambdax:x+1,range(5)))
#结果:<mapobjectat0000023A7B85E>
print(list(map(lambdax:x+1,range(5))))
#结果:[1,2,3,4,5]

Python的filter函数 二、Python 3中也有同样的区别

7.不支持has__key:

Python 2:

my_dict={"age":30,"name":"ZhangSan"}printmy_dict.has_key("age")print"age"inmy_dict
#结果:True#True

Python 3:

my_dict={"age":30,"name":"ZhangSan"}print("age"inmy_dict)
#结果:True
print(person.has_key("age"))
#结果:AttributeError:'dict'objecthasnoattribute'has_key'

以上是两个版本的区别。新生建议学习Python3,这是未来的发展趋势。正在学习Python2的学生不用担心。记住以上知识点,就可以快速启动Python3了!