博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下列关于python2.x和3.x的区别说法正确_Python 2.x和Python 3.x版本有哪些区别?【面试题详解】...
阅读量:1543 次
发布时间:2019-04-21

本文共 2331 字,大约阅读时间需要 7 分钟。

今天爱分享给大家带来Python 2.x和Python 3.x版本有哪些区别?【面试题详解】,希望能够帮助到大家。

Python 的3.x 版本相对于 Python 的早期版本,是一次较大的升级。为了不给系统带入过多的负担, Python 3.x 在设计时没有考虑向下兼容,即 Python3.x 和 Python2.x 是不兼容的。许多针对早期 Python 版本设计的程序都无法在 Python 3.x 上正常执行。为了照顾现有的程序,Python 2.6 作为一个过渡版本, 基本使用了 Python 2.x 的语法和库,同时也考虑了向 Python 3.x 的迁移,支持部分 Python3.x 的语法与函数。

目前最新的 Python 程序建议使用 Python 3.x 版本的语法。Python 3.x 的变化主要体现在以下几个方面:

(1) print 函数

在 Python 3.x中, print 语句没有了,取而代之的是  print 函数。在 Python 2.6 和 Python 2.7里,以下三种形式是等价的:

cb67643e3601cc60b3b5b0b3de76b7a9.png

84030cd0b168c86fde741f8ac53a4b6c.png

(2) Unicode

Python 2.x 默认使用 ASCII 编码,所以 Python 2.x 默认是不支持中文的,且变量命名只能用英文。Python 3.x 默认使用 UTF-8 的编码,所以 Python 3.x 默认是支持中文的,且变量命名能够使用中文。如果在 Python 文件中不指定头信息 # -*-coding:utf-8-*-.,那么在 Python 2.x 中默认使用 ASCII 编码,在 Python 3.x中默认使用 UTF-8 编码。由于 Python 3.x源码文件默认使用 UTF-8 编码,这就使得以下代码是合法的:

adf9653d1d9ca4f06692ae4f42e358ad.png

Python 2.x:

2975fb5cbdcf2032dadcfa8f3f45de12.png

Python 3.x:

51e06383320e99c116737c5a4ccb29b0.png

(3) 除法运算

Python中的除法与其他语言相比显得非常高端,它有一套很复杂的规则。Python 中的除法有两个运算符:/和//。在Python 2.x中,对于/算法,整数相除的结果是一个整数,它会把小数部分完全忽略掉,浮点数除法会保留小数点的部分,得到一个浮点数的结果。在Python 3.x中,/除法不再这么做了,整数相除的结果也会是浮点数。

f5644edbc76b33c6fac19e38c015a398.png

而对于 // 除法,这种除法被称为  floor 除法,它会对除法的结果自动进行一个  floor 操作,在 Python 2.x 和 Python 3.x 中是一致的。

c1d8eca25a028f4e744255eb5215279e.png

需要注意的是, // 并不是舍弃小数部分,而是执行  floor 操作。如果要截取整数部分,那么需要使用  math 模块的  trunc 函数。

cec200eae238c172a483ef1f4a0704aa.png

(4) 八进制字面量表示

在 Python 3.x 中,表示八进制字面量的方式只有一种,那就是 0o1000 ,而 Python 2.x 中的  01000 形式已经不能使用了。

50a00ae1645f9ef343b7b2c84f57cffe.png

(5) 不等运算符

在 Python 2.x 中, 不等于 可以有两种写法,分别是  != 和  <> 在 Python 3.x 中去掉了  <> 只有  != 一种写法。

(6) 去掉了 repr 表达式 “

在 Python 2.x 中反引号相当于 repr 函数 (返回一个对象的 string 格式) 的作用。在 Python 3.x 中去掉了 “这种写法,只允许使用  repr 函数,这样做的目的是为了使代码看上去更清晰。

c4829356af66efe44290388365552325.png

(7) 打开文件

在 Python 2.x 中使用 file(…) 或者 open(…) ,而在 Python 3.x 中只能使用 open(…)

(8) 数据类型

Python 3.x 去除了 long 类型,现在只有一种整型 int,但它的行为与 2.x 版本的 long 相同。还新增了 bytes 类型,对应于 2.x 版本的八位串,定义一个 bytes 字面量的方法如下:

8a516912a937c93f2686b804d44bd421.png str 对象和 bytes 对象可以使用  .encode() 和  .decode() 方法相互转化。

8c87d20ac3bdce764665ea0bc4380ba6.png

(9) input 和 raw_input 函数

在 Python 2.x 中,raw_input 会将所有输入的数据当作字符串看待,返回值为字符串类型。而 input 输入时必须是一个合法的 Python 表达式,格式与 Python 中的代码一样,其返回值与输入的数据类型相同。如果是 Python 2.x 版本,那么 input 和 raw_input 都可以使用。如果是 Python 3.x 版本,那么只能使用 input。因此,建议都使用 input 函数。

(10) map、filter 和 reduce

在 Python2.x 的交互模式下输入map和filter,可以看到它们两者的类型是 built-in function(内置函数)

19f6dc4fa43c84aa02c20bfa65bdbc23.png

它们输出的结果类型都是列表:

9d41c8042e76b73648f6abf75e2c5daf.png 但是在 Python3.x 中发生了变化:

fe538e1590cbbd8711ce06098745400d.png

首先它们从函数变成了类,其次,它们的返回结果也从列表变成了一个可迭代的对象,可以尝试使用 next 函数来进行手工迭代:

65aaff92ab6224a4ff7113b36b25e456.png

对于比较高端的 reduce 函数,它在 Python3.x中已经不属于 built-in function,而是被挪到了 functools 模块当中。

(11) xrange函数

xrange 可以生成序列。在 Python3.x 中取消了 xrange 函数,而使用 range 完全代替了 xrange 函数。在 Python 3.x 中调用 xrange 函数会报错。

在 Python2.x 中 xrange() 函数用法与 range() 函数完全相同,所不同的是生成的不是一个列表,而是一个生成器。

f4290cd57cd67e2bf23d2e84c43168f4.png

转载地址:http://bcwcy.baihongyu.com/

你可能感兴趣的文章
Unity中的刚体
查看>>
Unity中的坐标转换
查看>>
Unity中为什么不能对transform.position.x直接赋值?
查看>>
Lua(四)——变量
查看>>
Lua(十四)——元表
查看>>
Lua(十五)——协同程序
查看>>
Lua(十七)——面向对象
查看>>
Lua(十八)——错误处理,垃圾回收
查看>>
xLua(一)——介绍
查看>>
xLua(二)——下载
查看>>
Unity中使用ViedoPlayer操作视频文件
查看>>
Java MyBatis(2)--- generatorConfig.xml详解与运行
查看>>
VueJS(5)---初步练习(5题)
查看>>
mysql(3)-- 修改root密码命令小结
查看>>
JQuery(3)--冒泡效果
查看>>
异常(2)-- UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/项目包名
查看>>
Android软键盘(1)---输入法界面管理(打开/关闭/状态获取)
查看>>
Android动态设置view的高度宽度
查看>>
JQuery(4)---使用mousedown和mouseup简单判断鼠标按下与释放位置是否相同
查看>>
vue 事件总线EventBus的概念、使用以及注意点
查看>>