为什么在Python 3中000求值为0?

为什么在Python 3中000求值为0?,第1张

为什么在Python 3中000求值为0?

如果您看一下
词法分析
(整数文字部分)页面:

integer      ::=  decinteger | bininteger | octinteger | hexintegerdecinteger   ::=  nonzerodigit (["_"] digit)* | **"0"+(["_"] "0")***...

因此,这意味着a

decinteger
要么以非零数字开头(之后是所有可能的数字,并可选地带有下划线),要么是 零序列且
带有可选的下划线(其映射为零)。

文档还指出:

注意,在一个前导零 的非零十进制数不会 允许的。

因此,这意味着它们将零作为例外所有文档中都可以找到:您可以将零写为零序列。我的猜测是,它们当然必须包含

"0"
(您还如何将零指定为
decinteger
?),所以在那种情况下,无论数字系统如何,为什么都不允许有更多的零,并且
000
现在还是保持零。他们可能不想允许
01
a
decinteger
来防止意外运行python-2.x代码并因此获得完全不同的结果。

最后要注意的是, 下划线只是该规范的一部分,因为python-3.6:在3.5的规范中,语法中未提及 下划线

在python-2.7中,文档](https://docs.python.org/2.7/reference/lexical_analysis.html#integer-
literals)指定了一个零后跟其他数字(也将其他零作为

octinteger

integer        ::=  decimalinteger | octinteger | hexinteger |

bininteger
decimalinteger ::= nonzerodigit digit* | “0”
octinteger ::= “0” (“o” | “O”) octdigit+ | “0” octdigit+



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5661712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存