6

これはよく見られます (バリエーション a):

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()関数で実行したいことを表すだけです。

では、なぜ人々は他のバリエーションよりもバリエーションを好むのでしょうか? スタイルやフィーリングだけですか、それとも本当の理由がありますか? 可能であれば、ソースへのリンクもお願いします。

4

2 に答える 2

11

main()関数をコマンド ラインでの使用のみに制限するのはなぜですか?

main()モジュール スコープで関数を定義することにより、スクリプトをラップして、その呼び出し方法を変更できるようになりました。おそらく、sys.argv でデフォルトの引数を設定したい場合や、別のスクリプトでコードを再利用したい場合があります。

于 2012-08-02T10:22:51.533 に答える
4

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

于 2012-08-02T10:23:27.527 に答える