Python2与Python3区别总结

个人看法:虽然现在都是以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

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

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

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

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

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

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

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

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

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

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

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

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

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

    14.捕获异常语法变化 except xx,error 更改为 excepr xx as error

    15.Py3文件类中,file类被废弃

    16.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 中修改环境配置

 

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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值