Skip to main content
 首页 » 编程设计

python之为什么 Python 程序员仍然使用旧式除法

2025年05月04日32shanyou

我在 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 更加广泛和广泛使用时,我预计情况会发生变化。