数字类型实战——除法:经典的、取整的、真正的——支持两个系列的Python

未匹配的标注

虽然 / 在 3系列和2系列中的行为不同,但仍可以在代码中同时支持两个版本。如果程序依赖于截取整数除法,如前提到:同时在2系列和3系列中使用 //。对于整数,如果程序需要带余数的浮点结果,则使用 float 来保证当在2系列中运行时,/ 旁的一个运算对象为浮点数:

X = Y // Z # 在2系列和3系列中,总是截断,对整数(运算对象)总是得到整数结果。
X = Y / float(Z) # 保证在2系列或3系列中都是带余数的浮点除法。

另外,可以在2系列中使用 __future 导入来启用3系列的/除法,而不是强制进行float转换:

C:\code> C:\Python27\python
>>> from __future__ import division # 启用 3.X "/" 行为
>>> 10 / 4
2.5
>>> 10 // 4 # 整数 // 在两个系列中相同
2

当像这样交互式地键入时,这个特殊的from语句应用于余下的会话,且当在脚本文件中使用时必须作为第一句可执行的行出现(而且,哎,我们可以在Python中从未来导入,但却不能从过去导入;这里插入一些关于和“博士”聊天。。。)

这里是一种轻松诙谐的说法。这里说的博士,指的是《回到未来》电影中的布朗博士。意思是说,我们可以在老版本中可以导入未来版本中的特性,从而使用它们,但在新版本中却不能导入已被移除的老版本中的特性。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~