Python

Python2版本和python3的区别

2018-11-09  本文已影响18人  df7735f55322

本内容首发于公众号:Python的渐进之路

从我开始接触的时期开始Python3其实已经在全面的进行推广了,所以在简单的接触Python2之后开始决定开始学Python3,但是简单的说关于2和3的区别我们还是要了解一点比较常用的,至少2.x的版本在改改能让他在3的解释器上面执行。

注:接下来的讲解大都只是我在学习过程中所遇到的问题和总结可能并不能全面的覆盖之间的区别,但是对于一些具体的例子来说还是比较受用的

print 函数:

这个函数其实很简单,区别也很直接,不过网上讲的是真专业。。我们知道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的时候总是要在文件的第一行加上一行注释:

#! 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())。


库的名称变化:

旧的名字新的名字

导入相关的库注意使用新名称就好了

3

其实还有不少的我没有发现大家在知道后也可以发给我了解一下:

今天在网上无意间找到了一张关于各个Python常见库的介绍,可以给大家参考,当然只是参考,我觉得这张图还是有商榷的地方,像在控制MySQL的时候我用的是pymysql,这里面介绍的还是mysqldb。其他的标准库纯属长个见识,很多库我也还没用过。

上一篇下一篇

猜你喜欢

热点阅读