2012-01-06 10 views
0

main.pyを実行するのではなくインポートするときに、このブロックを実行するにはどうすればよいですか?Pythonでは、__name__ == '__main__'の場合と同じ動作をどうすればできますか:

#main.py 
if __name__ == '__main__': 
    #Do something interesting. 


#Do something to have the interesting code run after importing the file. 
import main.py 
main.__main__() # wrong of course. 
+0

なぜプログラムの主要部分に「興味深いコード」の関数を定義するだけではないのですか? – si28719e

+0

[モジュールの実行時に__name__ == '__main__'を作成する方法]の複製可能性(http://stackoverflow.com/questions/6114251/how-to-make-name-main-when-running-module) –

答えて

10

このコードを関数に入れて、ifの中で呼び出します。

def main(): 
    # ... 

if __name__ == '__main__': 
    main() 

または単にifを使用しないでください。

0

(適用されない「キャットプラスプラス」の答えように)あなたがmain.pyモジュールを変更せずにこれをしたいと仮定すると:

あなたが直接することはできません。 __name__は読み取り専用です。 (How to make __name__ == '__main__' when running moduleの最初の答えを参照してください)impモジュールを使用して、ファイルをロードする際にモジュールを明示的に指定することができます。

ただし、間接的にはexecfile('main.py')で行うことができます。

1

あなたはそれをお探しですか?

#main.py 
if __name__ == '__main__': 
    # Do something interesting when running main.py directly 
    pass 
else: 
    # Do something when the script in imported 
    pass 
2

モジュールコードは、初期化の一部として初めてインポートされたときに実行されるので、何も確認する必要はありません。特に、documentationに従って:

モジュール実行文と同様に関数定義を含むことができます。これらのステートメントは、モジュールを初期化するためのものです。モジュールはどこかにインポートされたときにのみ実行されます。

モジュールが実行されると、その後、アントワーヌPelisseからの応答はもちろんの進むべき道(あるべきモジュールがインポートされた場合に実行されるいくつかのコードではなく、何が必要ならば、あなたもチェックすることができ直接if __name__ != '__main__')。

関連する問題