2.4.5. 整型数字面值
整型数字面值由以下词法定义进行描述:
- integer ::=
decinteger
|bininteger
|octinteger
|hexinteger
- decinteger ::=
nonzerodigit
(["_"]digit
)* | "0"+ (["_"] "0")*- bininteger ::= "0" ("b" | "B") (["_"]
bindigit
)+- octinteger ::= "0" ("o" | "O") (["_"]
octdigit
)+- hexinteger ::= "0" ("x" | "X") (["_"]
hexdigit
)+- nonzerodigit ::= "1"..."9"
- digit ::= "0"..."9"
- bindigit ::= "0" | "1"
- octdigit ::= "0"..."7"
- hexdigit ::=
digit
| "a"..."f" | "A"..."F"
整型数字面值的长度没有限制,能一直大到占满可用内存。
在确定数字大小时字面值中的下划线会被忽略。它们可用来将数码分组以提高可读性。一个下划线可放在数码之间,也可放在基数说明符例如 0x
之后。
注意非零的十进制数开头不允许有额外的零。这是为了避免与 Python 在版本 3.0 之前所使用的 C 风格八进制字面值相混淆。
一些整型数字面值的示例如下:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
在 3.6 版更改: 允许在字面值中使用下划线进行分组。