数字类型实战——除法:经典的、取整的、真正的——支持两个系列的python | 第二部分 类型与操作 —— 第 5 章: 数字类型 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口
虽然 /
在 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中从未来导入,但却不能从过去导入;这里插入一些关于和“博士”聊天。。。)
这里是一种轻松诙谐的说法。这里说的博士,指的是《回到未来》电影中的布朗博士。意思是说,我们可以在老版本中可以导入未来版本中的特性,从而使用它们,但在新版本中却不能导入已被移除的老版本中的特性。