pythonのアンダースコア(_)を使う
コードを見ていると所々に出てくるアンダースコア。
変数の頭に付いていたり、関数の頭に二つ付いていたり、どんな意味があるかまとめた。
必要のない値を一時的に格納するもの
例
・for文
# 単純に文字列を5回出力したいだけ。range()から取り出した変数は使わない。
for _ in range(5):
print("test")
・return値を返さない
def main():
a = "hoge"
b = "fuga"
return a, b
if __name__ == '__main__':
# aしか出力しない
# bは廃棄される。
a, _ = main()
print(a)
関数名や変数名の頭に1つ付いているもの
クラス内メソッドや変数
あくまでも慣例的なので、外部からアクセス可能
importのワイルドカードで読み込まれない
関数名や変数名の頭に2つ付いているもの
ネームマングリングを適用することができる
ネームマングリングとは
クラス内のアンダースコアが2つ付いたメソッドや変数の名前を「_クラス名」+「変数名(メソッド名)」に変換する。その結果外部から定義した変数名やメソッド名で呼び出すことができなくなる。
関数名や変数名の後ろに1つ付いているもの
pythonの予約語と同じ関数名や変数名の場合、衝突を防ぐことができる
関数名の前後に2つずつついているもの
pythonで特別な用途で使用する、マジックメソッドを意味する。