我编写了一个模块,当从命令行执行或作为模块导入时,其行为有所不同,例如:
if __name__ == "__main__":
print("Aloha Main")
else:
print("Aloha Module")
虽然,当我在python3交互式会话中导入此模块时,我没有得到提示返回,我必须按一个额外的“回车”才能得到提示。调用此模块中的函数时也是如此。当我在“else:”之后注释掉“print”语句时,问题就消失了。即使“打印”到位,是否有可能获得提示?
更新:这是一个演示此行为的test.py
if __name__ == "__main__":
print("Aloha Main")
else:
print("Aloha Module")
我得到了:
% python3
Python 3.6.0 (default, Dec 23 2016, 12:51:31)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
>>> Aloha Module
>>>
在“Aloha模块”之后,我必须按Enter键才能返回提示符。这是在OSX上运行Python 3.6。在同一系统上的Python 2.7没有问题。
更新2:这是OSX 10.11.6中的一个问题,我在我的Linux机箱上测试了这个问题,我确实在python 3.6下得到了提示。我使用OSX内置终端。