web-dev-qa-db-ja.com

なぜpython大きな指数の結果の最後に 'L'を追加するのですか?

気付いた場合、pythonは、次のような大きな指数結果の最後に[〜#〜] l [〜#〜]を追加します。

>>> 25 ** 25
88817841970012523233890533447265625L

いくつかのテストを行った結果、10未満の数字には[〜#〜] l [〜#〜]が含まれていないことがわかりました。例えば:

>>> 9 ** 9
387420489

これは奇妙だったので、なぜこれが起こるのですか、それを防ぐ方法はありますか?すべての助けに感謝します!

29
NotAGoodCoder

Pythonは任意の精度の整数をサポートしています。つまり、通常の32ビットまたは64ビットの整数型よりも大きな数値を表現できます。 Lは、リテラルが通常の整数ではなく、このタイプの場合を示します。

Lはインタープリターの出力にのみ表示され、タイプを示しているだけです。代わりにその結果を印刷する場合:

>>> print(25 ** 25)
88817841970012523233890533447265625

Lは出力されません。

Python 3では、これらのタイプはマージされているため、Python 3出力:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 24 ** 24
1333735776850284124449081472843776
41
Collin