2016-08-04 3 views
2

Этот вопрос не об использовании функции int, а о том, как это делается внутренне.Как Python преобразует строку в целое число

Поскольку исходный код находится на C, я не понимаю, что там происходит.

Возможно, кто-то может объяснить, как Python конвертировать строку "123" в целое число 123. Какие операции выполняются для этого?

+4

Не могли бы вы предоставить функцию C, чтобы нам не пришлось искать ее сами? –

+0

«Я хочу понять, как это работает, но я не понимаю, на каком языке он написан, и хочу, чтобы вы объяснили мне это, а не изучали его», - так я интерпретировал этот вопрос. –

+0

@ TadhgMcDonald-Jensen, пожалуйста, подумайте о том, чтобы обновить ваш интерпретатор. – micgeronimo

ответ

2

При преобразовании строки python в int, например. a = int("123",10), (преобразовать строку «123» в целое число в базе 10) вызывается функция C.

Во-первых, он проверяет, что данная базовая счетные база> = 2 и < = 36, или 0. (ошибка в противном случае)
Затем она игнорирует все начальные пробелы. (Так что " 123" = "123"),
и проверить, если номер отмечен как положительное '+', или отрицательным '-'

Когда основание равно 0, он проверяет, если строка начинается с '0x','0o', '0b', '0', и устанавливает базу соответственно (шестнадцатеричной, восьмеричной , двоичный, десятичный).
Обратите внимание, что если база не указана, то базой по умолчанию является 10 (десятичная).

Затем переходит к превращению массива символов в число, используя алгоритм, описанный в коде комментарии на link posted by Paul Kehrer

завершающих пробела также игнорируется, и ошибки приподняты, если needed-, например, если есть пространство в середине строки, за которой следует число, или если есть символ без номера.

Смежные вопросы