入門Python3 4.10.1
アンダーバー二つから始まりアンダーバー二つで終わる変数はPythonによって予約された変数であるとのこと。
したがって自分で変数を定義するときはそういった名称を避けるべきらしい。
以前docstringについて学びましたがその時にも__doc__というのがありましたね、これが予約された変数ってことみたいです。
他にも予約された変数はいくつかあって例えば
def foo():
pass
print(foo.__name__)
$ py main.py
foo
__name__で関数名が文字列で取得できたりします。