【问题标题】:Why does python add an 'L' on the end of the result of large exponents? [duplicate]为什么 python 在大指数结果的末尾添加一个“L”? [复制]
【发布时间】:2014-05-19 15:35:30
【问题描述】:

如果你注意到了,python 会在大指数结果的末尾添加一个 L,如下所示:

>>> 25 ** 25
88817841970012523233890533447265625L

在做了一些测试后,我发现任何低于 10 的数字都不包括 L。例如:

>>> 9 ** 9
387420489

这很奇怪,所以,为什么会发生这种情况,有什么方法可以防止吗?感谢所有帮助!

【问题讨论】:

  • 因为在 C 层面,我相信整数的类型是long
  • @Alex_Thornton 你说的long是什么意思?
  • Ick,失败了,这不是最好的骗局。在那里浪费了我的锤子。
  • 你看数字的表示。数字本身没有尾随 L
  • @AlexThornton:我希望看到你将88817841970012523233890533447265625 放入 C 长...

标签: python python-2.x exponent


【解决方案1】:

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

【讨论】:

  • 我知道这是一个小问题,但由于 print(25**25) 显然是 Python 3,L 无论如何都不会显示。
  • 括号在任一版本中都可以正常工作,但确实如此。
  • @wnnmaw 为什么print(25**25) 显然是 Python 3?
  • @user189,因为我不知道print(x) 是有效的 Python 2 :P 我认为这意味着它会被视为一个函数,因此是 Python 3
猜你喜欢
  • 2021-10-06
  • 2013-03-10
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2014-06-20
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多