Pycharm 'Python Console' 中的 exec(open) 函数不执行 'if __name__ == '__main__' 块
exec(open) function in Pycharm 'Python Console' NOT executing 'if __name__ == '__main__' block
我试图了解 exec(open) 函数的工作原理并遇到了以下问题。这是解释问题的简化代码。
Module1.py
print(11)
def func():
print(12)
if __name__ == "__main__":
func()
所以,当我从终端 window 运行 这个模块时,使用 'python Module1.py',我得到的输出是
C:\projects>python Module1.py
11
12
但是,当我使用 Python Console/Interpreter 中的 exec(open) 函数作为“exec(open('Module1.py').read())”执行它时,然后输出是
>>> exec(open('Module1.py').read())
11
问题是:为什么在使用 exec 函数时 "if __name__ == __main__" 块没有被执行?
运行 PyCharm 中的代码不一定与 运行 正确 Python 控制台中的代码相同。
正如您在评论中提到的,如果您在 PyCharm 中得到奇怪的结果,则值得返回控制台并检查输出。
根据结果,PyCharm 似乎是 运行 和 "main" 一样,您通过 PyCharm 运行 的任何代码似乎都不被考虑主模块。
我试图了解 exec(open) 函数的工作原理并遇到了以下问题。这是解释问题的简化代码。
Module1.py
print(11)
def func():
print(12)
if __name__ == "__main__":
func()
所以,当我从终端 window 运行 这个模块时,使用 'python Module1.py',我得到的输出是
C:\projects>python Module1.py
11
12
但是,当我使用 Python Console/Interpreter 中的 exec(open) 函数作为“exec(open('Module1.py').read())”执行它时,然后输出是
>>> exec(open('Module1.py').read())
11
问题是:为什么在使用 exec 函数时 "if __name__ == __main__" 块没有被执行?
运行 PyCharm 中的代码不一定与 运行 正确 Python 控制台中的代码相同。
正如您在评论中提到的,如果您在 PyCharm 中得到奇怪的结果,则值得返回控制台并检查输出。
根据结果,PyCharm 似乎是 运行 和 "main" 一样,您通过 PyCharm 运行 的任何代码似乎都不被考虑主模块。