2016-08-04 5 views
2

Cette question ne concerne pas l'utilisation de la fonction int, mais plutôt comment elle est effectuée en interne. Comme le code source est en C, je ne comprends pas ce qui se passe là-bas.Comment Python convertit la chaîne en nombre entier

Peut-être que quelqu'un peut expliquer comment Python convertir la chaîne "123" en entier 123. Quelles opérations sont effectuées pour cela?

+4

Pourriez-vous fournir la fonction C afin que nous n'ayons pas besoin d'aller la chercher nous-mêmes? –

+0

"Je veux comprendre comment cela fonctionne mais je ne comprends pas la langue dans laquelle il est écrit et je veux que vous m'expliquiez au lieu de l'apprendre", c'est ainsi que j'ai interprété cette question. –

+0

@ TadhgMcDonald-Jensen, s'il vous plaît envisager de mettre à jour votre interprète – micgeronimo

Répondre

2

Lors de la conversion d'une chaîne python en int, par ex. a = int("123",10), (convertir la chaîne "123" en nombre entier dans la base 10) une fonction C est appelée.

En premier lieu, il vérifie que la base de la base de comptage donné est> = 2 et < = 36, ou 0 (Erreur non)
Ensuite, il ignore tous les espaces de début. (De sorte que " 123" = "123"),
et vérifier si le numéro est marqué comme positif '+' ou négatif '-'

Lorsque la base est égal à 0, il vérifie si la chaîne commence par '0x','0o', '0b', '0', et définit respectivement la base (hexadécimal, octal , binaire, décimal).
Notez que si aucune base n'est donnée, la base par défaut est 10 (Décimal).

Il procède ensuite à tourner le tableau de caractères en un nombre, en utilisant l'algorithme décrit dans le commentaire de code au link posted by Paul Kehrer

espaces Trailing sont également ignorés et les erreurs sont élevés si besoin- par exemple, s'il y a un espace au milieu de la chaîne, suivi d'un nombre, ou s'il y a un caractère non numérique.