2.4.5. 整型数字面值

整型数字面值由以下词法定义进行描述:

  1. integer ::= decinteger | bininteger | octinteger | hexinteger
  2. decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
  3. bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
  4. octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
  5. hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
  6. nonzerodigit ::= "1"..."9"
  7. digit ::= "0"..."9"
  8. bindigit ::= "0" | "1"
  9. octdigit ::= "0"..."7"
  10. hexdigit ::= digit | "a"..."f" | "A"..."F"

整型数字面值的长度没有限制,能一直大到占满可用内存。

在确定数字大小时字面值中的下划线会被忽略。它们可用来将数码分组以提高可读性。一个下划线可放在数码之间,也可放在基数说明符例如 0x 之后。

注意非零的十进制数开头不允许有额外的零。这是为了避免与 Python 在版本 3.0 之前所使用的 C 风格八进制字面值相混淆。

一些整型数字面值的示例如下:

  1. 7 2147483647 0o177 0b100110111
  2. 3 79228162514264337593543950336 0o377 0xdeadbeef
  3. 100_000_000_000 0b_1110_0101

在 3.6 版更改: 允许在字面值中使用下划线进行分组。