Pythonでは、アンダースコア _
は特殊な意味を持つことがあります。これは変数や関数の命名において重要な役割を果たします。
アンダースコアの位置と意味
Pythonでは、アンダースコア _
の位置によってその意味が変わります。
- アンダースコアのみ
_
: 必要のない値 (または一時的な変数)の代入先として使用されます。 - 先頭に1つのアンダースコア
_foo
: クラス内でのみで参照・使用されるものを示します。 - 末尾に1つのアンダースコア
foo_
: 利用したい変数名がPythonの予約キーワードと同じ場合に、名前が衝突することを避けます。 - 先頭に2つのアンダースコア
__foo
: クラスの変数やメソッドに対してネームマングリング (Name Mangling)が適用されます。 - 先頭と末尾に2つずつのアンダースコア
__foo__
: Pythonの特殊メソッドを示します。 - 途中に1つ以上のアンダースコア
foo_bar_baz
,10_000_000
: 数字や文字を読みやすくするために使用されます。
アンダースコアの使用例
以下に、それぞれのアンダースコアの使用例を示します。
# アンダースコアのみ
for _ in range(47):
print('Hello, world')
# 先頭に1つのアンダースコア
class Test:
def __init__(self):
self._foo = 0
# 末尾に1つのアンダースコア
def foo(class_):
print(class_)
# 先頭に2つのアンダースコア
class Test():
def __init__(self, name):
self.__name = name
# 先頭と末尾に2つずつのアンダースコア
class Test():
def __init__(self):
pass
def __str__(self):
return "This is a test class"
# 途中に1つ以上のアンダースコア
foo_bar_baz = 10_000_000
これらのアンダースコアの使用法を理解することで、Pythonのコードをより効果的に書くことができます。