基礎・中級問題チェック

問題 26 /40

次のコードのファイルがある場合、インタープリタで「import module」とインポートしたタイミングで、すぐに「hello」と表示されないようにするには、★★★に何を記述すればいいか。

module.py
-------------------------------
def func():
    print('hello')

if __name__ == '__★★★__':
    func()
-------------------------------

選択 1

main

選択 2

name

選択 3

module

選択 4

init

解説

選択肢1が正解です。

以下のコードの場合、インタープリタで「import module」とインポートしたタイミングで、すぐにfunc()が実行されます。

module.py
---------------------
def func():
    print('hello')
func()
---------------------

インタープリタで「import module」とインポートすると、変数「__name__」に「'module'」が代入されます。

そのため、「if __name__ == '__main__':」と記述するとif文がFalseになり、func()が実行されません。

また、コマンドラインで「python module.py」とすると、変数「__name__」に「__main__」が代入されます。

そのため、「if __name__ == '__main__':」と記述するとif文がTrueになり、func()が実行されます。

このように「if __name__ == '__main__':」は、インタープリタで関数が意図せず実行されないようにしたり、「python module.py」でfunc()を確実に実行するために記述します。

(公式書籍 p.62)