6

私はIDLEにいます:

>>> import mymodule
>>> # ???

モジュールをインポートした後:

if __name__ == '__main__':
    doStuff()

mainIDLEから実際に呼び出すにはどうすればよいですか?

4

7 に答える 7

12

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()
于 2010-05-29T16:58:17.167 に答える
3

何かをインポートする場合、それはメインではありません。メニューから実行するか、アイドル状態を開始するときに引数として実行する必要があります。

于 2010-05-29T16:55:48.297 に答える
1

Python 2.6 でモジュールを名前で実行する別の方法を見つけました。

>>> import runpy
>>> runpy.run_module('mypack.mymodule')

run_module は、作成されたすべての属性を含む辞書を返します

http://docs.python.org/library/runpy.html?highlight=runpy#runpy.run_module

于 2010-06-17T23:00:17.960 に答える
1

あなたが持っているものを「メイン」と呼んでいると思いますif __name__ == '__main__'。つまり、次のように呼びます。

>> import mymodule
>> mymodule.doStuff()

それ以外の場合、実際にモジュールにメイン関数がある場合、

>> import mymodule
>> mymodule.main()
于 2010-05-29T16:54:41.907 に答える
1

execfile編集: Python 3 で削除されたため、この古い回答を更新しました。

Python 2 で

import を使用する代わりにexecfile (つまり) を使用します。execfile(file_path)

Python3 で

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!
于 2010-05-29T19:15:01.357 に答える
0

ホアキンが言ったように、メイン関数自体を呼び出すだけです。ファイルの場所でターミナルを開いたままにして、必要なときにコマンドを再実行するだけです。最後の方法は、geany や Idle などの IDE を使用して (file>open) で開き、F5 を押すことです。

if __name__ == '__main__':
doStuff()

実際には、インポートされた場合にメイン関数が実行されないように作られています。

于 2010-05-29T17:28:36.320 に答える