web-dev-qa-db-fra.com

Pourquoi python ajoute-t-il un 'L' à la fin du résultat des grands exposants?

Si vous l'avez remarqué, python ajoute un L à la fin des grands exposants comme ceci:

>>> 25 ** 25
88817841970012523233890533447265625L

Après avoir fait quelques tests, j'ai constaté que tout nombre inférieur à 10 n'inclut pas le L . Par exemple:

>>> 9 ** 9
387420489

C'était étrange, alors, pourquoi cela se produit-il, y a-t-il une méthode pour l'empêcher? Toute aide est appréciée!

29
NotAGoodCoder

Python prend en charge des nombres entiers de précision arbitraire, ce qui signifie que vous pouvez représenter des nombres plus grands qu'un type entier 32 ou 64 bits normal. L vous indique quand un littéral est de ce type et non un entier régulier.

Notez que L n'apparaît que dans la sortie de l'interpréteur, cela signifie simplement le type. Si vous imprimez ce résultat à la place:

>>> print(25 ** 25)
88817841970012523233890533447265625

L n'est pas imprimé.

Dans Python 3, ces types ont été fusionnés, donc Python 3 sorties:

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