这个问题不是关于int
函数的使用,而是关于它是如何在内部完成的。
因为源代码在C中,我不明白那里发生了什么。
也许有人可以解释Python如何将字符串"123"
转换为整数123
。
为它执行了哪些操作?
答案 0 :(得分:3)
https://github.com/python/cpython/blob/2d305e1c46abfcd609bf8b2dff8d2065e6af8ab2/Objects/longobject.c#L2075-L2366包含您正在寻找的实施方案。虽然理解C是有用的,但在中间有一个很大的评论(从第2132行开始)解释了大部分方法。
答案 1 :(得分:2)
将python字符串转换为int时,例如a = int("123",10)
,(将字符串“123”转换为基数为10的整数)调用C函数。
首先,检查给定的计数基数是> = 2且< = 36,还是0.(否则出错)
接下来,它会忽略所有前导空格。 (以便" 123" = "123"
),
并检查该号码是标记为正'+'
还是标记为'-'
当base为0时,它检查字符串是否以'0x','0o', '0b', '0'
开头,并分别设置基数(十六进制,八进制,二进制,十进制)。
请注意,如果没有给出基数,则默认基数为10(十进制)。
然后使用link posted by Paul Kehrer
代码注释中描述的算法将字符数组转换为数字尾随空格也会被忽略,如果需要也会引发错误 - 例如,如果字符串中间有空格,后跟数字,或者是否存在非数字字符。