2012-08-02 16 views
6

あなたは、多くの場合、この(バリエーションa)に見ることができます:main()関数がif '__main__'の内部で定義されていないのはなぜですか?

def main(): 
    do_something() 
    do_sth_else() 

if __name__ == '__main__': 
    main() 

をそして私は今、疑問に思って、なぜないこの(変動B):

if __name__ == '__main__': 
    do_something() 
    do_sth_else() 

少なくともこの(変動C ):

if __name__ == '__main__': 
    def main(): 
     do_something() 
     do_sth_else() 

    main() 

もちろん、関数はmain()は関数呼び出しではなく、main()関数でやりたいことを表しています。

なぜ人々は他のものよりもバリエーションを好んでいますか?それはちょうどスタイルか感覚か、またはいくつかの本当の理由がありますか?可能であれば、ソースをリンクしてください。

答えて

11

main()機能をコマンドラインでのみ使用するのはなぜですか?

モジュールスコープでmain()関数を定義することで、あなたは今、あなたのスクリプトをラップし、それが呼ばれる方法を変更することができます。おそらく、あなたはsys.argvにデフォルトの引数を設定したいと思うかもしれません。おそらくあなたは別のスクリプトのコードを再利用したいでしょう。

4

これは、Pythonスクリプトを使用する2つの方法があるためです。 1つはコマンドラインから、もう1つは別のスクリプトからインポートするときです。コマンドラインから実行するときはmain()関数を実行したいが、インポートするときは、main()を必要とするまでmain()関数を実行したくない場合がある(main()をインポートしたい)。

関連する問題