この質問は、int
関数の使用法ではなく、内部的にどのように行われるかについてです。Pythonが文字列を整数に変換する方法
ソースコードはC言語で書かれているので、何が起こっているのか分かりません。
誰かが、"123"
という文字列をどのようにして整数123
に変換するかを説明する人もいます。 どのような操作が実行されますか?
この質問は、int
関数の使用法ではなく、内部的にどのように行われるかについてです。Pythonが文字列を整数に変換する方法
ソースコードはC言語で書かれているので、何が起こっているのか分かりません。
誰かが、"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(エラーがなければ)をチェックします。
次に、先頭のスペースをすべて無視します。
、(" 123" = "123"
ように)と数は'-'
塩基が0である場合、それは文字列が'0x','0o', '0b', '0'
で始まるかどうかを確認し、それぞれのベースを設定する(16進数、オクタル'+'
正、又は負としてマークされているかどうかを確認、バイナリ、小数)。
ベースが指定されていない場合、デフォルトベースは10(10進数)です。それは、その後link posted by Paul Kehrer
末尾のスペースで、コードのコメントに記述されたアルゴリズムを使用して、数値に文字配列を回すに進み
も無視され、スペースがあるかどうエラーが例えばneeded-場合にスローされます文字列の真ん中に数字が続いていたり、数字以外の文字があるとします。
C関数を提供して、自分で検索する必要はありませんか? –
「どのように動作するのか理解したいですが、それが書かれている言語を理解できず、それを学習するのではなく私に説明してほしい」というのは、私がこの質問をどのように解釈したかです。 –
@ TadhgMcDonald-Jensen、あなたのインタプリタを更新することを検討してください – micgeronimo