数字を表記するとき何桁かでアンダーバーを入れると見やすいのですが、format 文で可能な3桁だと桁計算がはかどらないので4桁で入れようとするとテキスト処理することになります。そうなると色々と面倒そうなので、アンダーバーを入れたテキストそのまま数字の戻せるのかとやってみたら、できるんですね。*1
int("1_234") #1234 float("4_5_6.7_8_9") #456.789
カンマだと Value Error がでます。
int("1,234") # ValueError: invalid literal for int() with base 10: '1,234'
アンダーバーもカンマも format 文だと表記されるのですが、読み込みはアンダーバーだけのようです。
2進数、8進数、16進数などですと、int への直入力ではアンダーバーは問題ないみたいです。テキスト入力はオプションが必要。
int(0b_1_0_0) #4 int(0o_1_1) #9 int(0x_f_f) #255 int("0b_1_0_0",2) #4 int("0o_1_1",8) #9 int("0x_f_f",16) #255
これも知らなかったのですけれど、
bin(3) #'0b10' oct(9) #'0o11' hex(17) #'0x11' type(bin(3)) #str type(oct(9)) #str type(hex(17)) #str
出力を見ればわかるのですが、bin、oct、hex は文字列で出力されるのですね。
ちなみにバージョン
import sys sys.version >>3.8.13 | packaged by conda-forge | (default, Mar 25 2022, 05:59:45) [MSC v.1929 64 bit (AMD64)]
*1:float の場合はドットの前後にアンダーバーを入れるとエラーになるのですが、それ以外なら変換できるようです。