Baculaについて残課題はいろいろ残っていますが、いったんバックアップも取れたのでまたほかの事書きたいと思います。
というわけでまたpythonです。
今「Python Programming: An Introduction to Computer Science」という本を読んでいます。
その中にmain関数について説明している部分があったのでメモします。
pythonプログラムの実行について
- 直接実行するもの
- プログラム、スクリプトと呼ばれる
- 他のプログラムからインポートされる
- ライブラリと呼ばれる
- 直接実行するもの
これまで(書籍内のサンプルコード)はmain関数を呼び出す行が一番下にあった
こんなの
def main(): print(’Hello’) main()
- Pythonはインポートプロセス中にモジュールの行を評価する
- 一般にモジュールをimportする際はモジュールを実行させないほうが良い
- インポートされたか、直接実行できるプログラムでは一番下のmainへの呼び出しを条件付きにする必要がある
if __name__=='__main__': main()
- モジュールがインポートされるたびに、pythonはimportされたモジュールの名前にnameという名前のモジュール内の特別な変数を設定する。
>>> import math >>> >>> math.__name__ 'math' >>> >>> __name__ '__main__'
つまりこの記載となっているモジュールをインポートしてもname変数がmainでないため、処理が実行されないということですね。
余計な動きをさせないようにってことでいいのかな?
いろんなブログとかでこの表記が出てきていまいちわからなかったけどなんとなく動きが理解できました。
name変数が何者なのかも調べたいな。