【Python】for文:_(アンダーバー)の意味と使用方法

2021.10.19 /

【Python】for文:_(アンダーバー)の意味と使用方法

本記事ではPythonforループ文で使用される_(アンダーバーまたはアンダースコア)について解説していきます。

for文などで利用されるこのアンダースコア、不思議なことにあまり参考書で解説されていないんですよね。

ですが知っていると便利な機能なので、ぜひ知らない人は本記事で学んで、今日から使ってみてください。

_(アンダーバー)の利用する場面

Pythonで_(アンダーバーまたはアンダースコア)を使う場面は多いです。

参考書やGithubで以下のようにアンダースコアを利用している場面をよく目にすると思います。

if __name__ == '__main__'

def _func(x):

x, _ = func(y)

x = 5_400_000
print(x)
# 5400000

if __name__ == '__main__'については詳しく知りたい方は以下記事をご参照ください。

このようにアンダースコアを使う場面は多いです。まとめると次の場面で利用されることが多いです。

  1. 関数名に付ける
  2. 戻り値を保存しない
  3. 数値の可読性の向上
  4. インタプリタで最後に表示した値を表す

本記事で解説するアンダースコアの利用は2番の使い方です。

アンダーバーは戻り値を保存しない

アンダーバー1文字は戻り値や要素を保存しないこと、つまりそれらを使用しないことを表します。

この説明だけでは意味が分からないと思うので実際にコードで利用する例を見ていきましょう。

for _ in range(5):
    print('office54')

上記は5回ループを回してoffice54を表示するプログラムです。ここでは変数名にアンダーバーを使用して、range(5)の値を順次代入しています。

しかしアンダーバーは要素を保存しないので、ただ単に5回ループを回すためだけのfor文となります。

これは以下のプログラムと同様の意味になります。

for i in range(5):
    print('office54')

ただ違う点としては、変数iにrange(5)の値を代入して無駄にメモリを使っているということです。

もう一つ例を見てみましょう。

lists = ['office', '54', 'python']
x, y, _ = lists
print(x + y)
# office54

上記のように利用しない要素に対してはアンダースコアを利用して、メモリの消費量を節約することができます。

あとfor文と同じくらいの頻度で関数の返り値を無視するために利用することも多いです。

def function():
    return 'office', '54', 'python'
x, y, _ = function()
print(x + y)

まとめ

本記事「【Python】for文:_(アンダーバー)の意味と使用方法」はいかがでしたか。

ここではアンダーバーの利用法の一つをご紹介しました。

アンダースコアを利用することで無駄にメモリを消費することはなくなります。とても重要な知識ですので、ぜひ覚えてください。