(个人记录)Python2 与Python3的版本区别

Posted 知识补全计划

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(个人记录)Python2 与Python3的版本区别相关的知识,希望对你有一定的参考价值。


现在还有些开源模块还没有更新到python3 ,不了解版本区别,无法对不合适的地方进行更改。

由于只追求向Python3靠近,所以对于python2的特别用法不探究。

此文不补全所有版本区别,仅作档案记录我遇到的版本区别.


print函数:

在 Python 2 中, print 被视为一个语句而不是一个函数

更改:

Python 2中的print语句==>Python 3中的print()函数

image_thumb1

image_thumb

 


input():

python2的raw_input()更新为Python 3 中的input()


整数除法:

更新:

由py2中的舍去小数的除法==》py3中的计算比较精确的除法

如果py3中想要不保留小数,使用  // 运算符

image_thumb2

image_thumb3

但要注意小数中//运算符的使用,//是返回比实际的商要小的数。

image_thumb4


Unicode编码:

  • 1.Python 2中的字符串基于ASCII
  • 2.Python 3 默认使用 Unicode,Python3中的字符串类型默认是unicode类型的,另外新增了两个字节类:bytes和bytearrays
  • Byte的使用:
    • str对象转换成bytes对象可以使用encode()
    • bytes对象转换成str对象使用decode()
    • Python中对bytes类型的数据带 b前缀的单引号或双引号表示:

image_thumb6

  • 由于编码变化还导致了python中网络编程函数使用的变化,网络传输都是字节流的,Python2的网络传输默认是字节型的,而python3中字符串是Unicode的,所以python3要对数据进行编码再传输。

不等运算符

Python 2.x中不等于有两种写法 != 和 <>

Python 3.x中去掉了<>, 只有!=一种写法

现在仍有一些教程保留着<>的用法!


处理异常:

捕获异常的语法由 except exception, variable 改为 except exception as variable

image_thumb5

 

python3中将一些异常细化了,新增了不少异常


抛出异常:

更新:

py3使用构造函数抛出异常

raise 异常名, "自定义的异常信息"
raise 异常名("自定义的异常信息")

image_thumb1[1]

 


生成器的迭代:

python2中支持   生成器.next()

更新为

python3中的next(生成器),生成器.__next__()

 

image_thumb7 


以上是关于(个人记录)Python2 与Python3的版本区别的主要内容,如果未能解决你的问题,请参考以下文章

Neural networks学习——记录python3下与教材里的python2的不同

Python2与Python3的区别:

教你们如何切换Python2与Python3

Python2+python3——多版本启动和多版本pip install问题

ubuntu 18 python3.6 的安装与 python2的版本切换

python2与python3的区别(持续更新)