为什么Python程序员仍然使用旧式划分?

dan*_*n04 1 python integer-division

我在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)
Run Code Online (Sandbox Code Playgroud)

幸运的是,PEP 238已经写好了,一旦我发现了新的from __future__ import division声明,我就开始虔诚地将它添加到我写的每个.py文件中.

但在这里它是近9年后的今天,我仍然经常看到的Python代码示例使用/整数除法.是//不是一个广为人知的功能吗?或者是否有理由更喜欢旧的方式?

Ale*_*lli 8

我认为//截断是众所周知的,但人们不愿意在他们编写的每个模块中"从未来导入" .

经典方法(使用float(sum(seq))等等来获取浮点结果,int(...)截断一个其他浮点除法)是你在C++中使用的方法(在C,Java,Fortran等语法中略有不同),如以及通过2.7包含的每个Python版本中的"原生",所以如果很多人习惯并且习惯于说"经典方法",那就不足为奇了.

当Python 3比Python 2更广泛和广泛使用时,我希望事情会发生变化.