【転載】浅析python中_name__ = '__main__' の役割

1245 ワード

この文章は主にpythonの中のname='main'の役割を紹介して、初心者にとってとても役に立ち、必要な友达は参考にすることができます
多くの初心者がpythonを勉強し始めたばかりの頃はpythonのname='main'というコードをよく見かけますが、初心者が勉強を始めたときに疑問に思っていることが多いかもしれませんが、pythonのname='main'の役割は、いったい何をしているのでしょうか.このコードの意味を古典的に要約すると、「Make a script both importable and executable」とは、あなたが書いたスクリプトモジュールを別のモジュールにインポートして使用することができ、そのモジュール自体も実行することができるという意味です.この言葉は、最初はよく分からなかったかもしれません.次に例を示します.まずモジュールを書きます.
#module.py
def main(): 
    print "we are in %s"%__name__
if __name__ == '__main__': 
    main()

この関数はmain関数を定義し、pyファイルを実行すると「we are in main」が印刷され、if文の内容が実行されたことを示し、main()が呼び出されます.しかし、別のモジュールからモジュールをインポートし、main()関数を呼び出すとどのような結果になりますか.
#anothermodle.py
from module import main
main()

その結果、we are in moduleは「we are in main」と表示されませんでした.つまり、モジュールname='mainの下の関数は実行されませんでした.これにより、「モジュール」ファイルを実行したり、他のモジュールに導入したりすることができ、関数を2回も実行しません.それが肝心だ.まとめてみましょう.もし私たちが直接何かを実行していたら.pyファイルの場合、このファイルでは「name='main'」はTrueですが、別の.pyファイルからimportでファイルをインポートすると、nameの値がmainではなくpyファイルの名前になります.この機能には、コードをデバッグするときに「if name='main」という機能があります.「デバッグコードを追加すると、外部モジュールが呼び出したときにデバッグコードを実行しないようにすることができますが、問題を確認したい場合は、モジュールファイルを直接実行すると、デバッグコードが正常に動作します.
原文アドレス転送ゲート