1.print函数
在Python 2中,print语句是关键字而不是函数,其语法如下:
print "Hello, World!"
在Python 3中,print是一个函数,需要使用小括号来包裹print参数。如下:
print("Hello, World!")
在Python 2和Python 3中,print函数默认在结尾加上换行符。但是在Python 3中,可以通过end参数来修改结尾的字符,默认情况下end为 '\n'。
2.Unicode 编码
python2.X默认使用ASCII 编码,所以python2中默认是不支持中文的,且变量命名只能用英文。
Python3.X默认使用UTF-8编码,所以Python3.X默认是支持中文的,且变量命名能够使用中文命名。
如果在Python2.X文件中不指定头信息 “#__coding:utf-8--”,那么在Python2.X中默认使用ASCII 编码,在Python3.X中默认使用UTF-*8编码
3.除法运算
Python 2 和 Python 3 在除法上的区别主要体现在整数除法的行为不同:
1.在Python 2中,整数除法/返回的是整数结果,并向下取整,即得到的结果只保留整数部分,舍弃小数部分。比如:
print(5/2) # 输出2
print(-5/2) # 输出-3
2.在Python 3中,整数除法/自动将结果转换为浮点数,即得到的结果为浮点数。比如:
print(5/2) # 输出2.5
print(-5/2) # 输出-2.5
为了保持和Python 2中整数除法的表现一致,Python 3中新增了一种整数除法运算符//,其是向下取整的整数除法,不保留余数部分。如下:
print(5//2) # 输出2,舍弃了余数
print(-5//2) # 输出-3,向下取整并保留负号
4.xrange和range函数
Python2中使用xrange生成序列,在python3中取消了xrange函数,而是用range函数完全代替了xrange函数,
- xrange()返回的是一个可迭代对象。
range()
函数返回的是一个迭代器对象。
5.不等运算符
在Python2.X中,”不等于“ 可以有俩种写法,分别是 ”!=“ 和 ”<>“ ;在Python3.X中去掉了”<>“,
只有”!=“一种写法
6.在整数数据类型上的区别
在Python2中,整数数据类型有两种:int
和long
。其中,int
通常被限制为32位,而long
类型可以用来存储非常大的整数。
在Python3中,整数数据类型只有一种:int
。并且,int
类型的精度是无限的,可以存储任意大小的整数。
7.打开文件
在Python2.X中可以使用file(...)或open(...),而在Python3中只能使用open(...)
8.map,filter 和reduce
在Python 2中,map()和filter()函数返回的是列表对象,类型属于内置函数(built-in function)而在Python 3中,它们返回的是迭代器对象,类型是类。而reduce()函数在Python 3中没有返回值,而是需要通过functools.reduce()
来使用