exec(open)関数の動作を理解しようとしていて、次の問題が発生しました。この問題を説明するための簡単なコードを示します。PycharmのPython Consoleでexec(open)関数を実行していない場合__name__ == '__main__'ブロック
Module1.py
print(11)
def func():
print(12)
if __name__ == "__main__":
func()
だから私は 'のpython Module1.py' を使用して、ターミナルウィンドウからこのモジュールを実行したときに、私が実行
C:\projects>python Module1.py
11
12
しかし、のような出力を得ますこの 'exec(open(' Module1.py ')。read())'としてexec(open)関数を使用すると、出力は
>>> exec(open('Module1.py').read())
11
です。 0
質問:exec関数を使用しているときに "if __name__ == __main__"ブロックが実行されないのはなぜですか?
メインから実行していないため、つまり、 '__name __!= '__ main __''今すぐ – abccd
どのバージョンのpythonを使用していますか?私は3.6と2.7.13でテストしたところ、完全に動作します。おそらくこれはWindows固有の問題ですか? – Alan
@Alan私はPython 3.5.2を使用しています。 –