我发现了一些奇怪的代码:
all_modules_ = [
'BaseHTTPServer', 'imaplib'
]
for module in all_modules_:
print(module)
m = __import__('test')
然后我得到了
» python test.py
BaseHTTPServer
BaseHTTPServer
imaplib
imaplib
这是为什么?
ipython中的结果似乎很正常:
In [2]: all_modules_ = [
...: 'BaseHTTPServer', 'imaplib'
...: ]
...:
...: for module in all_modules_:
...: print(module)
...: m = __import__('test')
...:
...:
BaseHTTPServer
imaplib
答案 0 :(得分:2)
运行test.py
时,it runs the module as __main__
。由于模块执行__import__(„test“)
,因此它将再次以test
的身份运行模块。因此,您会再次看到每个输出。
由于Python不会以相同的名称重新导入模块,因此您获得的输出不会超过两次。
在ipython中运行时,您的模块不存在。标准库模块测试改为运行一次。由于它不产生任何输出,因此您只能看到自己的输出一次。