【Python学習①】「if __name__ == ‘__main__’:」とは?

未分類

概要

【内容】

  • 独学で学んだ知識の整理を目的として、Python-izm に沿って学習中。
  • 今回は「入門編」の中で理解しきれなかった「if __name__ == __main__:」について。

最初に

Pythonにはいろいろな勉強サイトがある。自分は独学でいろいろなサイトのつまみ食い的に学んでしまったので今回は一つのサイトに絞って体系的に学んでいこうと考えた。いろいろなサイトの入門編試してみたが、無料ということでPython-izmさんを参考に学んでみる。

基礎構文

Python-izm
わかりやすさを重視したPythonの学習サイトです。サンプルコードと実行結果を掲載し、基本構文からWebアプリ、GUIアプリなどもサポートしています。

上記URLにアクセスし入門編を進めていく。
1~4は知っている内容なので飛ばす。

5.基本構文の中に疑問だった内容を発見。

 if __name__ == '__main__': 

サンプルコードとかでも頻繁に出てくるこいつは何者なのか、分からないまま放置していたが少し調べてみた。

__name__とは

以下のような二つのファイル作成、name.pyをステップ実行してみる。

import name2

print("__name__ = " + __name__)    #__name__ = __main__

name2.CallName()    #__name__ = name2

print("__name__ = " + __name__)    #__name__ = name2
def CallName():
    print("__name__ = " + __name__)

なるほど、メインで実行されているスクリプトのときは__name__ = __main__ で、
呼び出されたときは __name__ = スクリプトの名前 になるのね。

だからif __name__ == __main__:の中身はそのスクリプトを直接動かした時だけ動くということなのか。

どんな時に使う?

  • インポートされるモジュールを作っているときに確認のコードを書くのに便利。
    なぜならインポートされたときは表示されないから。
  • 「==」の部分を「!=」に変えればインポートされたときのみ実行されるものが作れる。
    なにに使えるかは謎だが(笑)

コメント

タイトルとURLをコピーしました