Python

【備忘録】Pythonにおけるアンダースコア"_"の役割について

More than 2 years have passed since last update.

アンダースコア"_"の役割

Pythonのサンプルコードを読んでいて、

def __init__():

であったり、

def _variable_hogehoge(x):

みたいなアンダースコア二つ又は一つで書かれるのをよく見る。

アンダースコア二つで定義される関数は外部の参照を受けないもの。この場合、アンダースコアで囲う。
アンダースコア一つで定義される関数は参照はできるが、基本的に外部から参照しない ということを慣習化させたものらしい。

ここまでは知っていたが、こんなサンプルコードの一文が

_, loss_value = sess.run([train_op,loss])

なんのアンダースコアなのかなーと思い調べてみたところ
"Python で使わないタプルの値は “_” (アンダーバー) に代入するというプラクティス"

ようは、使わない返り値に変数を割り当てるのはナンセンスだから、アンダースコアで無視しましょうということ。

プログラム的に美しくなる気がする。