0

次の名前のモジュールがあるmodule1とします。

def main():
    print 'K DawG'

main()

そして、module2この行だけで:

import module1

基本的に何が起こるかというと、実行module1すると期待どおりに印刷され、実行すると、明示的に述べない限り、それは何もすべきではありませんが、それも印刷されますK DawGmoudle2module1.main()K DawG

これはなぜですか?Python は、インポート中にインポートされたスクリプトを実行しますか? もしそうなら、どうすればこれを止めることができますか?

4

1 に答える 1

8

はい、もちろんスクリプトはインポート時に実行されます。これは、別のプログラミング言語を使用しない限り、変更できないという事実です。

解決策は通常これです:

if __name__ == '__main__':
    main()

そうすれば、それを使用して実行する場合にのみ実行されますpython whatever.pyが、インポートするときは実行されません。


インポート中に何が起こるかについて詳しく知るには:

モジュールが既に にある場合はsys.modules、そのエントリが返されます。それ以外の場合、モジュールのコードが実行され、そのファイルのグローバルがsys.modulesエントリに格納されます。したがって、モジュールを初めてインポートするときにのみ、そのコードが実行されます。

于 2013-09-26T13:04:27.880 に答える