Python2.X和Python3.X版本有哪些主要的区别

发布时间 2023-03-26 20:13:52作者: 我不知道取什么名字好

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()返回的是一个生成器对象,这个对象会在你进行循环迭代或使用list()访问时返回元素。这种方式将大大节省内存,因此在循环可迭代的大整数序列时,使用xrange()比使用range()更加高效
  • range()返回的是一个列表,即使它用在循环中,它也需要在循环之前生成整个列表

5.不等运算符

在Python2.X中,”不等于“ 可以有俩种写法,分别是 ”!=“ 和 ”<>“ ;在Python3.X中去掉了”<>“,

只有”!=“一种写法

6.在整数数据类型上的区别

在Python2中,整数数据类型有两种:intlong。其中,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()来使用