为什么Python程序员仍然使用老式除法?

2024-04-24 07:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我从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,即{a3}。//不是一个广为人知的特性吗?还是真的有理由喜欢旧的方式?在


Tags: ofthe语言returndef地方itarithmetic
3条回答

如果愿意,可以为整个解释器更改/的行为,因此不必在每个模块中从future导入

$ python -c "print 1/2"
0
$ python -Qwarn -c "print 1/2"
-c:1: DeprecationWarning: classic int division
0
$ python -Qnew -c "print 1/2"
0.5

对我来说,使用int进行除法总是有意义的,它会产生一种通常不进行动态类型转换的语言。在

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

经典方法(使用{{CD2>}等来获得浮点结果,^ {< CD3>}以截断另一个浮点除法)是C++中使用的一个(并且在C、java、FORTRAN、……中略有不同的语法),以及在每个Python版本中包含“2.7”的“nApple”,所以如果很多人都习惯了,这并不奇怪。习惯了,说“经典方法”。在

当Python3比Python2更广泛、更广泛地使用时,我希望事情会有所改变。在

相关问题 更多 >