fla*_*urn 1 python int literals python-3.x
我正在阅读Python 3 int(...)函数的文档,无法理解以下语句:
基数0表示完全解释为代码文字,因此实际基数为2,8,10或16,因此int('010',0)不合法,而int('010')是,以及int('010',8).
有人可以解释它到底在说什么吗?我无法弄清楚.
Python整数可以通过给它一个特定的前缀来表示不同的基础.如果你写,0x16那么数字被解释为十六进制,0o16你得到八进制解释等.在源代码中写入整数称为文字语法.
您可以使用相同的语法将包含文本的字符串值传递给int()函数,并通过将第二个参数设置为0:来确定使用此类前缀的基数.
>>> int('16') # default base 10
16
>>> int('16', 0) # no prefix, still base 10
16
>>> int('0x16', 0) # 0x prefix makes it base 16, hexadecimal
22
>>> int('0o16', 0) # 0o prefix is interpreted as base 8, octal
14
>>> int('0b101', 0) # 0b prefix means base 2, binary
5
Run Code Online (Sandbox Code Playgroud)
int()除了0采用零填充字符串之外的任何基数:
>>> int('016')
16
Run Code Online (Sandbox Code Playgroud)
但是当您将基数设置为0不再接受此类字符串时,因为整数的Python文字语法不接受这些:
>>> int('016', 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: '016'
Run Code Online (Sandbox Code Playgroud)
在Python 2中,您可以使用这样的前导零,并且这将被解释为八进制数,因此基数为8.这会导致混乱的错误,并且语法已从Python 3中删除,其中0o现在仅支持前缀.