gpt4 book ai didi

python - Python 3.x 中长整数的 L 后缀

转载 作者:太空狗 更新时间:2023-10-30 01:51:12 25 4
gpt4 key购买 nike

在 Python 2.x 中,长整数后有一个 L 后缀。由于 Python 3 将所有整数视为长整数,因此已将其删除。来自 What's New In Python 3.0 :

The repr() of a long integer doesn’t include the trailing L anymore, so code that unconditionally strips that character will chop off the last digit instead. (Use str() instead.)

从这里我得到 repr() 不会显示 L 后缀,但是 str() 会有 L 后缀。但在 Python 3.3.3 中,它们都没有显示 L 后缀。

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> repr(2 ** 64)
'18446744073709551616'
>>> str(2 ** 64)
'18446744073709551616'

根据文档,str() 的输出不应该是 18446744073709551616L 吗?我在 What's New In Python 3.1 中找不到任何内容, What's New In Python 3.2What's New In Python 3.3 L 后缀也从 str() 中删除。 3.2 说:

The str() of a float or complex number is now the same as its repr().

但它没有提到整数。

str() 中也从哪个版本的 Python L 中删除了后缀?还是我遗漏了一些明显的东西?

最佳答案

您误解了文档。

这句话是针对那些试图从 repr() in Python 2 中去除 L 的人。这些人可以改用 str() 并获得相同的数字,而不必每次都去掉 L

换句话说,str() 在 Python 2 中用于长整数时,是将数字转换为字符串的更好方法,因为它永远不会添加 L repr() 将添加的后缀:

Python 2.7.6 (default, Apr 28 2014, 17:17:35) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print repr(1L)
1L
>>> print str(1L)
1

Python 3 永远不会添加 L。不是在使用 repr() 时,也不是在使用 str() 时。没有意义; 所有 Python 3 中的整数都是长整数。

关于python - Python 3.x 中长整数的 L 后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com