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了!