Python 如何将字符串转换为整数

How Python converts string to integer

这个问题不是关于 int 函数的用法,而是它是如何在内部完成的。

因为源代码在 C 中,所以我不明白那里发生了什么。

也许有人可以解释如何 Python 将字符串 "123" 转换为整数 123。 对其进行了哪些操作?

https://github.com/python/cpython/blob/2d305e1c46abfcd609bf8b2dff8d2065e6af8ab2/Objects/longobject.c#L2075-L2366 包含您要查找的实现。虽然理解 C 很有用,但中间有一个大注释(从第 2132 行开始)解释了大部分方法。

将 python 字符串转换为 int 时,例如a = int("123",10),(将字符串“123”转换为以 10 为底数的整数)调用了一个 C 函数。

首先,它检查给定的计数基数是否 >= 2 且 <=36,或 0。(否则出错)
接下来,它忽略所有领先的 space。 (这样 " 123" = "123"),
并检查该数字是否标记为正数 '+' 或负数 '-'

当基数为0时,检查字符串是否以'0x','0o', '0b', '0'开头,并分别设置基数(十六进制、八进制、二进制、十进制)。
请注意,如果未指定基数,则默认基数为 10(十进制)。

然后使用 link posted by Paul Kehrer

处的代码注释中描述的算法,继续将字符数组转换为数字

尾随 space 也会被忽略,如果需要会引发错误 - 例如,如果字符串中间有一个 space,后跟一个数字,或者如果有一个非-数字字符。