auの日記

プログラミング初心者の日記。(auはハンドルネームです)

Pythonのトップレベルって何だ

auです。

Python命名規則を調べている際に「トップレベル」という用語を見つけました。

何だろうと思ったので調べてみました。

が、しかし、同じように疑問に思っている人がいてもこれという解決は見つけられなく、他の言語でのトップレベルが多くヒットしました。なので、自分なりの解釈や実際に調べて分かったことをまとめようと思います。

トップレベルとは

Pythonにおけるトップレベルとは、__name__の__main__です。

自分なりの解釈としてはこんな感じでした。

最初に実行したファイルのエントリーポイントのブロックがトップレベルです。

実際のファイルでいうこの部分です。

class Hoge():
    def fuga():
        print('piyo')


# このブロックがトップレベル!
if __name__ == '__main__':
    instance = Hoge()
    hoge.fuga()

ファイルを実行した際に、一番最初に読み込まれる部分がこのifのブロックです。
トップレベルは最初に実行されるブロックという認識なので、ここが「トップレベル」という認識です。あってるのかな・・・。

また、pep8(Python命名規則)での空行では、以下のように記述されています。

トップレベルの関数やクラスは、2行ずつ空けて定義するようにしてください。

つまり、一番最初に読み込まれるであろう関数やクラスは2行(上に?)空けるべきなんだと思います。

pep8-ja.readthedocs.io