首页 >后端开发 >Python教程 >为什么 Python 2.x 将带前导零的数字解释为八进制?

为什么 Python 2.x 将带前导零的数字解释为八进制?

Patricia Arquette
Patricia Arquette原创
2024-11-26 12:08:09627浏览

Why Does Python 2.x Interpret Numbers with Leading Zeros as Octal?

解码 Python 中神秘的“0”前导数字

当您在 Python 2.7.3 中输入带有前导零的小整数时,它们会产生意想不到的结果,例如:

>>> 011
9
>>> 0100
64
>>> 027
23

这个怪癖源于Python的方式解释以“0”为前缀的数字。在 Python 2.x 中,这些数字被视为八进制(以 8 为基数)整数。

揭开八进制数

在八进制数字系统中,每个数字代表 的幂8. 例如:

  • 011 代表 1 x 8^ 1 x 8⁰ = 9
  • 0100 代表 1 x 8² 0 x 8¹ 0 x 8⁰ = 64
  • 027 代表 2 x 8¹ 7 x 8⁰ = 16 7 = 23

Python 3现代方法

与 Python 2.7.3 不同,Python 3.0 不会将前导“0”的数字识别为八进制整数,而是会引发错误。要在 Python 3 中表示八进制数,必须使用“0o”前缀,例如:

>>> 0o11
9
>>> 0o100
64
>>> 0o27
23

Python 2.x 中的旧版支持

Python 2。 x 版本 >= 2.6 支持八进制的旧格式(前导“0”)和新格式(前导“0o”)数字,提供向后兼容性。

以上是为什么 Python 2.x 将带前导零的数字解释为八进制?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn