私はIDLEにいます:
>>> import mymodule
>>> # ???
モジュールをインポートした後:
if __name__ == '__main__':
doStuff()
main
IDLEから実際に呼び出すにはどうすればよいですか?
私はIDLEにいます:
>>> import mymodule
>>> # ???
モジュールをインポートした後:
if __name__ == '__main__':
doStuff()
main
IDLEから実際に呼び出すにはどうすればよいですか?
if 条件 on__name__ == '__main__'
は、モジュールが直接実行されたときにコードが実行され、インポートされたときに実行されないようにするためのものです。たとえばJavaのような「メイン」の概念は実際にはありません。Python が解釈されると、モジュールのインポート/実行時にすべてのコード行が読み取られて実行されます。
Python は、__name__
モジュールをスクリプトとして実行する場合とインポートの場合を区別するメカニズムを提供しますpython mymodule.py
。この2番目のケース__name__
では、値があります'__main__'
実行できる main() が必要な場合は、次のように記述します。
def main():
do_stuff()
more_stuff()
if __name__ == '__main__':
main()
何かをインポートする場合、それはメインではありません。メニューから実行するか、アイドル状態を開始するときに引数として実行する必要があります。
Python 2.6 でモジュールを名前で実行する別の方法を見つけました。
>>> import runpy
>>> runpy.run_module('mypack.mymodule')
run_module は、作成されたすべての属性を含む辞書を返します
http://docs.python.org/library/runpy.html?highlight=runpy#runpy.run_module
あなたが持っているものを「メイン」と呼んでいると思いますif __name__ == '__main__'
。つまり、次のように呼びます。
>> import mymodule
>> mymodule.doStuff()
それ以外の場合、実際にモジュールにメイン関数がある場合、
>> import mymodule
>> mymodule.main()
execfile
編集: Python 3 で削除されたため、この古い回答を更新しました。
import を使用する代わりにexecfile (つまり) を使用します。execfile(file_path)
Carles Barrobés's answerで提案されているようにrunpyモジュールを使用します。
アップデート:
条件の目的は、モジュールのインポート時にif __name__ == '__main__'
「if」ブロック内のコードが実行されないようにすることです。このようなコードは、ファイルが直接実行される場合にのみ実行されます。たとえば、コマンド ラインから「python filenameexecfile(_filename_)
」を実行するか、 .
リクエストに応じて、execfile の使用例。でC:\my_code.py
:
if __name__ == '__main__':
print "Hello World!"
次に、インタープリターで次のようにします。
>>> execfile("C:\\my_code.py")
Hello world!
ホアキンが言ったように、メイン関数自体を呼び出すだけです。ファイルの場所でターミナルを開いたままにして、必要なときにコマンドを再実行するだけです。最後の方法は、geany や Idle などの IDE を使用して (file>open) で開き、F5 を押すことです。
:
if __name__ == '__main__':
doStuff()
実際には、インポートされた場合にメイン関数が実行されないように作られています。