main.py#main.pyimport mainprint('Hello')輸出:HelloHello我相信,當涉及到 lineimport main時,當時已在其中main注冊,因此不會執行sys.modules另一個腳本的 import 語句 -我相信它不是其中的一部分。__main__有人可以告訴我我是否理解正確嗎?如果不是,請給出解釋。
3 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
讓我們添加一些調試輸出:
import sys
print([key for key in sys.modules.keys() if 'main' in key])
import main
它打印:
['__main__']
['__main__', 'main']
這是為什么?
如果您運行一個模塊,它不會作為其模塊名稱添加到sys.modules. 相反,它將永遠是__main__。
如果您隨后按名稱 ( main) 導入模塊。該名稱不存在,sys.modules因此模塊將再次導入,執行其代碼并將模塊存儲在sys.modules其名稱下。
執行main.py時會打印['__main__'],重新導入時會打印兩個模塊名稱:['__main__', 'main'].
這暗示了一條規則:盡量不要在代碼中的任何地方導入正在運行的模塊。
添加回答
舉報
0/150
提交
取消