特殊メソッドしたい(__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の予約語と重なってしまう場合は、変数名のあとに_
をつける慣習があります。
できるかぎり命名規則に沿った変数名を考えるべきですが、
スコープの範囲が狭かったり、一時的な変数の場合には、このようにしてもよいと思います。