特殊メソッドしたい(__dunder__

Pythonで書かれたソースコードを読んでいると、__で囲まれたメソッド名が目に入ってきます。 これは__特殊メソッド__を意味していて、ふたつのアンダースコアが連なるため**ダンダー(dunder)**と呼ばれてます。

また、ひとつのアンダースコアを変数名の前につけて内部変数を意味したり、 変数名の後ろにつけて仮変数とする慣習もあります。

プライベート変数したい(_変数名 / _関数名()

1def _internal_function(...):
2    pass

変数名や関数名の先頭に_をつけて、プライベートであることを表します。

注意

Pythonの仕組み的に、C++のようなプライベート変数はありません。 ヒトの目でみてプライベート変数のように見えるだけで、モジュール名._変数名で変数にアクセスできます。

呼び方と実装が一致していないので、C++などから来たひとは戸惑うかもしれませんが、 個人的には、セッター/ゲッターを書かなくてもいいので便利だなと感じます。

一時変数したい(_

1for i in range(10):
2    time.sleep(1)
3
4# i を使わないので、次のように書いてもOK
5for _ in range(10):
6    time.sleep(1)

返り値を受け取る必要がない場合、_で代用できます。

仮変数したい(変数名_

1type_ = type(変数)

使いたい変数名が、Pythonの予約語と重なってしまう場合は、変数名のあとに_をつける慣習があります。 できるかぎり命名規則に沿った変数名を考えるべきですが、 スコープの範囲が狭かったり、一時的な変数の場合には、このようにしてもよいと思います。