个人看法:虽然现在都是以Py3的学习口号最为响亮,但是Py2的应用也不可否认的。所以建立抓住几个重点区分就好,用的时候再专门进行查取

1.Python3没有向下兼容

2.Python2.6与2.7是过度版本,使用Python2的语法和库,允许部分Py3的语法和函数

编码:

    Py2:有两种字符串类型,Unicode和非Unicode字符串,源码默认"ASCII",

              但字符编码在不同环境不一样,Linux是UTF-8,Windows 是GBK

    Py3:只有Unicode字符串,源码文件默认"utf-8"    

   注意:编码可以应用encode()编码,decode()解码,Unicode是中间码,来进行各个编码的转换

语法:

    1.去除了<>,改用!=

    2.去除"",改用repr() 【repr()作用:用户转换任意字符为str类型】

    3.关键字加入as和with,以及True,False,None

整形除法返回浮点数,要得到整形结果使用 // ,但是在 / 计算时,都存在精度丢失的问题(例如:10 / 3 || 1/0.3)

    5.加入了nonlocal,使用nonclocl x 可以直接指派(非全局)变量

Py3去除了print语句,加入print()函数,以及exec语句,改为exce()函数

    【exce用于执行存储在字符串或文件中的python语句】

改变了顺序操作符的行为,x < y 如果类型不匹配抛出TypeError,Py2是返回随机的boole值

    8.输入函数删除 raw_input() ,用 input() 代替。

py3:input 获取的数据默认是 string 类型

        py2:raw_input 获取的数据更加内容自动推导,不带任何装饰为 int ,加 "" 为 str ,带小数为 float 】

新的 super() 可以不再传递参数【super用于继承父类方法时的调用】

    10.之前字典对象 has_key() 测试字典是否包含指定键,改为 in 

.py2中迭代器的 next() ,用于返回序列的下一项。py3 改为 __next__() ,并增加内置函数 next() ,用来调用 __next__()

    12.异常从 BaseException 继承,去除了 StardardError

    13.去除了异常类的序列行为和 .message 属性

as

Py3文件类中,file类被废弃

py2中的 xrange【生成器,调用时获取内容】更改为Py3中的 range【生成一个序列】,都是在循环时使用

数据类型:

    1.py3去除了 long ,只有 int 。类似py2中的 long

    2.新增 bytes 类型,str 对象和  bytes 对象可以通过 encode()【编码】和 docode()【解码】进行相互转换

 

Python多版本兼容的处理方法

1.虚拟环境建立

2.命令中修改 python 命令,以 py2 和 py3 区分

3.PyCharm 中可以直接在 setting 中修改环境配置

 

总体没有写的很全,打算后续用到的时候再进行添加,至少前面的知道了解就足够了。