9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python初心者】if __name__ == '__main__'を手を動かして理解する。

Last updated at Posted at 2020-07-30

何をするか

if \_\_name\_\_ == '\_\_main\_\_ ':とすることで、
出力がどう変わるかを4steps+2stepsで体験しました。

今回は、初心者がよく使う「spyder」などツールで間接的に.pyを実行する際の挙動を示しています。

ターミナルで「$ python XXX.py」と直接実行する場合は、本記事下部の<参考記事>から詳細をご覧ください。

いざ実践

#__name__

###1. まず、print('Hello!')する関数をかき、「hello.py」として保存する。

例1_hello.pyを定義する
#hello.py
def function():
    print('Hello!')

###2. 次の新規.pyで「hello.py」をimportしてみる

例2_hello.pyをimport
import hello
hello.function()

#出力内容
#--------------------
# Hello!
#--------------------


functionが実行されたことがわかる。

###3. hello.pyを編集して、 __name__ も一緒に出力してみる

例3_nameを追加
#hello.py
def function():
    print('Hello!')
    print(' __name__とすると、なんと表示されるのか..!? -->' ,  __name__)

###4.もう一度importを実行してみると...

例4_hello.pyを実行してみる
import hello
hello.function()

#出力内容
#--------------------
#Hello!
#__name__とすると、なんと表示されるのか..!? --> hello
#--------------------


__name__の部分には、「hello.py」の「hello」が表示された!

##結論( __name__ とは )

__name__ にはimportされたモジュール'hello.py'のモジュール名'hello'が入っていることが分かった。

#__main__

###次に、hello.pyを編集して、 __main__ を追加してみる。

例1_mainの中に「佐藤」を仕込む。
#hello.py
def function(name):
    print('Hello!',name)
    print('ちなみに__name__の中身は-->',__name__)

if __name__ == '__main__':
    print('mainの中の関数が実行されるのか..?',function('Sato'))

###hello.pyを実行してみる。

例2_「田中」を表示する
import hello
hello.function('Tanaka')
#出力内容
#--------------------
#Hello! Tanaka
#ちなみに__name__の中身は--> hello
#--------------------


__name__はモジュール'hello.py'のモジュール名'hello'のままだった。
そのため、function()内にもかかわらず、if __name__ == '__main__':の中身(仕込んだ「佐藤」)が実行されなかった。

##結論( __main__ とは )

if __name__ == '__main__':にすることで、__main__以下が実行されないことが分かった。

#まとめ
importされた時に、実行させない部分を if __name__ == '__main__':以下に書く。
※ $ python hello.py など直接呼び出すときは実行されます。

参考
【python】if name == 'main':とは?

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?