1

私は 2001 年に Python を使い始めました。私はこの言語のシンプルさが気に入りましたが、私を悩ませた機能の 1 つは/演算子でした。

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 コード サンプルを頻繁に目にします。広く知られている機能ではありませんか?それとも、実際に古い方法を好む理由がありますか?///

4

3 に答える 3

8

//切り捨てはかなりよく知られていると思いますが、人々は自分が書くすべてのモジュールで「未来からインポート」することに消極的です。

古典的なアプローチ (などを使用float(sum(seq))して float の結果を取得しint(...)、それ以外の場合は float の除算を切り捨てる) は、C++ で使用するものです (C、Java、Fortran などでは構文が少し異なります)。 2.7までのすべてのPythonリリースに「ネイティブに」含まれているため、多くの人が「古典的なアプローチ」に非常に慣れていて快適であるとしても驚くことではありません。

Python 3 が Python 2 よりも普及し、広く使用されるようになると、状況が変化することが予想されます。

于 2010-08-20T05:11:29.823 に答える
2

/必要に応じてインタープリター全体の動作を変更できるため、すべてのモジュールで将来からインポートする必要はありません

$ 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
于 2010-08-20T05:50:19.013 に答える
1

私にとって、int を使用して除算すると int が得られ、 int が通常はオンザフライ型変換を行わない言語になることは常に理にかなっています。

于 2010-08-20T10:34:37.923 に答える