曹阳的博客 仅用于学习和分享

Python2版本和python3的区别

2020-02-02

这个函数其实很简单,区别也很直接,不过网上讲的是真专业。。我们知道Python2.6和Python2.7是过渡版本,这些是可以兼容一部分Python3的语法的,print()是在Python3常用版本,Python2是不用加括号和加括号兼容的。

我们说的像print简单的区别就是后面加上了括号,其实更确切的说是把print语句变成了print()函数。这个加不加括号直接决定了是函数还是语句的区别。在类里面是属性和方法的区别。大家注意一下就好。

Unicode:

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。现在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和bytearrays。由于 Python3.X 源码文件默认使用utf-8编码

所以以前在用Python2的时候总是要在文件的第一行加上一行注释:

Unicode:

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。现在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和bytearrays。由于 Python3.X 源码文件默认使用utf-8编码

所以以前在用Python2的时候总是要在文件的第一行加上一行注释:

#! usr/bin/python 
#coding=utf-8

也就是说需要我们制定编码格式,要不然对中文很不友好。但是Python3是很好的编码方式,输入中文很方便,但是我们在看见大牛还在Python3加这句话的时候不要笑,他可能很了解Python2已经养成了习惯而已。

除法运算:

Python中的除法较其它语言显得非常高端,有套很复杂的规则。(没有学习其他语言,不知道高端在哪),Python中的除法有两个运算符,/和//(整除也加地板除),区别就在/

在Python2.x版本给人的感觉有点死板,这也是我比较喜欢Python3的原因,他越来越摆脱关于程序的死磕,有着一些类似“智能”的变通,在2.X版本我们看见只要除数和被除数是整数的话,结果也必然是整数,这就造成了分子小于分母的正整数相除时得到的都是0,但是在3.X里面已经没有了这方面的问题。

不要小看这个除法,我之前写程序的时候在2.X这个版本上面浪费的心血都是泪,死活找不到原因,其实等你了解了才知道错误原因如此的简单。

我们讲到脚本的第一行添加 #! usr/bin/python3 这一句其实也有另外一个总用,白话说就是写上执行路径,让我们可以用./来执行程序,不单单用Python3命令来执行。

输入函数input():

raw_input函数被Python3废弃,统一使用input函数。这个区别很明显就是在2.X版本里面input另有作用。

注意:input()会将我们的输入统一改成字符串格式。如果我们在输入数字参与后续的运算时,要记得利用int()函数进行格式的转换。

缩进:

先说缩进:(tab键和space不可以混用)

Python3使用更加严格的缩进。Python2的缩进机制中,1个tab键和8个space是等价的,所以在缩进中可以同时允许tab和space在代码中共存。但是我们知道不同的IDE初始的缩进可能是不同的,这对于初学者来说可能根本找不到错误的原因。Python3中1个tab只能找另外一个tab替代,因此tab和space共存会导致报错:TabError: inconsistent use of tabs and spaces in indentation.

import:

import:(说是核心变化,但是目前用的不多)

Python2中相对路径的import会让我们没办法导入标准库。主要是在同一目录下面的话,若创建了和标准库同名的文件名将会导入失败。Python3中需要导入同一目录的文件必须使用绝对路径,否则只能使用相关导入的方式来进行导入。但是我们想想对文件的命名都是极力避开标准库名称。觉得和日常的相关性不大。

数据类型:

之前在接触数据类型的时候由于一开始就学的3,所以那些淘汰的数据类型,也只是了解但是没有用过,简单的介绍一下。long整型被彻底废弃,统一改写成int类型代替。不等于只有“!=”,舍弃了“<>”。

xrange:

没了,xrange函数被Python3废弃,统一使用range,Python3中range的机制也进行修改并提高了大数据集生成效率,说白了就是涵盖了xrange的功能

返回对象:

其实很多2版本的返回对象都是返回的列表,但是3版本中都返回了一个“容器”,可以使用迭代器取出,有的也可以直接list()强制转换(比如这些函数:dictionary关联的keys()、values()、items(),zip(),map(),filter())。


Similar Posts

Content