0

重複の可能性:
<if __name __ ==“ __ main __”:>は何をしますか?

UNIXスクリプトをUNIXで実行しようとすると、何も起こりません。線に沿って何かを入力します

 $ python script.py

返されるのは

 $

これで、アイドル状態で正常に実行されるため、コードに問題がないことがわかりました。コマンドラインから実行できるようにするには、コードに何か他のものを追加する必要があると考えました。Pythonのグーグルチュートリアルで、関数の最後に追加されたボイラープレートコードを紹介しました。

def main():
  print ...
  etc etc
if __name__ == '__main__':
  main()

そして、mainという関数を作成して、そのように実行すると、正常に機能します。ただし、関数に別の名前を付けた場合、それは機能しません。例えば

def merge():
  print ..
  etc etc
if __name__ == '__merge__':
  merge()

その関数はコマンドラインでまったく出力を生成しません。mainという単語の末尾からnを削除しただけでも、上記のmain関数で発生するたびに機能しません。コマンドラインでPython関数を実行するにはどうすればよいですか?そして、mainと呼ばれる関数だけを実行させるPythonで一体何が起こっているのでしょうか?

ありがとう!

4

2 に答える 2

2

コマンドラインからPythonスクリプトを実行する場合、__name__は常に'__main__'です。

次のようなものを試してください:

def merge():
  print ..
  etc etc
if __name__ == '__main__':
  merge()

Pythonインタープリターから、次のようなことを行う必要があります。

>>> import script
>>> script.merge()
于 2012-12-06T15:05:50.417 に答える
2
__name__ == "__main__"

関数を使用しているのと同じファイルからコードを実行する場合は、変更しないでください。

if __name__ == "__main__":
    merge()

別のファイル内でそのモジュールをインポートする場合のみ、それについて気にしないでください

このリンクはあなたにもう少し説明します

于 2012-12-06T15:06:46.127 に答える