我在 2001 年开始使用 Python。我喜欢这门语言的简单性,但是让我非常恼火的一个特性是 / 运算符,它会在一些微妙的地方咬我,比如
def mean(seq):
"""
Return the arithmetic mean of a list
(unless it just happens to contain all ints)
"""
return sum(seq) / len(seq)
幸运的是,PEP 238已经写好了,当我发现新的 from __future__ import division 语句时,我开始虔诚地将它添加到我编写的每个 .py 文件中。
但现在已经快 9 年了,我仍然经常看到 Python code samples那use / for integer division . // 不是一个广为人知的功能吗?或者实际上有理由更喜欢旧方法吗?
请您参考如下方法:
我认为用于截断的 // 是众所周知的,但人们不愿意在他们编写的每个模块中“从 future 导入”。
经典方法(使用float(sum(seq))等得到一个float结果,int(...)截断一个otherwise-float除法)是你在 C++ 中使用的(在 C、Java、Fortran 等中语法略有不同),以及在 2.7 之前的每个 Python 版本中都是“本地”的,所以如果有很多,也就不足为奇了的人非常习惯并乐于接受“经典方法”。
当 Python 3 变得比 Python 2 更加广泛和广泛使用时,我预计情况会发生变化。
