Pythonはファイル全体をスコープとした記述が出来、例えば次の三行だけのファイルを動かせます。
print('---') print('Hello, World!') print('---')
インタプリタらしく一行一行コマンドを読み込み、実行していく感じです。この一行一行がくせもので必ずファイル全体をスコープとしたグローバル環境にコードを記述する必要があります。例えば関数を定義して呼び出す際、最後はグローバルから呼び出すことになります。
def hello_world(): return 'Hello, World!' hello_world()
この仕様によるグローバル汚染を防ぐためにPythonにはいくつか慣習があります。例えば、実行ファイル以外のコードが不意に走ることを防ぐためのif文があります。
def hello_world(): return 'Hello, World!' if __name__ == '__main__':# このファイルがメインの実行ファイルならばtrue hello_world()
同じ様にグローバル変数には命名の慣習があり、ローカル内で誤ってグローバル変数を参照することを避けます。内容はいたってシンプル、先頭の_です。
def hello_world(): return 'Hello, World!' _msg = hello_world() if __name__ == '__main__':# このファイルがメインの実行ファイルならばtrue print(_msg)
この様にすることで複数ファイルを連携させた際に参照したい変数、参照したくない変数を操りやすくします。この慣習は根付いており、Python実行ファイル上において_hogeな変数とfugaな変数は同等に扱われるにもかかわらず、IDE等のPython対応のエディタにおいて_hogeな変数はグローバル変数用の扱い、fugaな変数はローカル変数用の扱いと区別されます。