为什么python3中000的计算结果是0?

2024-04-16 11:24:45 发布

您现在位置:Python中文网/ 问答频道 /正文

{{cd2}不合法了。可以。在

那么,为什么写00是合法的,它正确地计算为0,而其他数字会触发语法错误呢?在

>>> 01
  ...
  File "<interactive input>", line 1
    01
     ^
SyntaxError: invalid token
>>> 
>>> 00
0

Tags: tokeninputline数字interactivefile语法错误合法
1条回答
网友
1楼 · 发布于 2024-04-16 11:24:45

如果您查看Lexical Analysis(整型文本部分)页面:

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

所以这意味着decinteger要么以非零数字开头(后跟所有可能的数字和可选的下划线),要么是一个带有可选下划线(映射到零)的零序列。在

文件还指出:

Note that leading zeros in a non-zero decimal number are not allowed.

所以这意味着他们为零做了一个例外(在的所有文档中都可以找到):你可以把零写成一个零序列。我的猜测是,它们当然必须包括"0"(否则,如何将零指定为decinteger?),那么在这种情况下,为什么不允许更多的零,而不管数字系统是什么,000是并保持为零。他们可能不想让01作为decinteger来防止意外运行{a3}代码,从而获得完全不同的结果。在

最后注意下划线只是该规范的一部分,因为:在specifications for 3.5中,它们在语法中没有提及。在

Inthe documentation指定后跟其他数字的零(也可以将其他零作为octinteger

integer        ::=  decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::=  nonzerodigit digit* | "0"
octinteger     ::=  "0" ("o" | "O") octdigit+ | "0" octdigit+

相关问题 更多 >