Pythonにおける数値の中のアンダースコア(バージョン3.6以上)

Python (3.6以上) の数値の中のアンダースコアは区切り文字です。
読みやすくすることが目的であり、無視できます。

実際に、こちらを実行するとTrueになります。

>>> 1_000_0 == 10000
True

ただし、これらの制約があります。

  • Python 3.6以上

  • 数値の間(あるいは、基数指定の直後)に一つだけ挿入

リファレンスで確認

Python言語リファレンス(3.7.4)で確認しましょう。

2.4.4. 数値リテラル には以下の記述があります。

アンダースコアはリテラルの値を判断するにあたって無視されます。そのためアンダースコアを使って数字をグループ化することで読みやすくできます。アンダースコアは数字と数字の間に 1 つだけ、あるいは 0x のような基数指定の直後に 1 つだけ挿入できます。
(略)
バージョン 3.6 で変更: グループ化を目的としたリテラル中のアンダースコアが許されるようになりました。

Python言語リファレンス(3.7.4); 2.4.4 数値リテラル

たしかに、アンダースコアは数値の区切り文字として使われ、無視しても問題ないようです。

また、0x は16進数であることを示しています。

>>> 0x10 == 16
True

おわりに

テキストやウェブの情報は、実際に使っているPythonとバージョンが異なっていることもあり得ます。
バージョンが異なると、動作や表示も若干異なる場合があるので注意が必要です。
このようなドキュメントを見るクセをつけておきましょう。

この記事が気に入ったらサポートをしてみませんか?