亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Hello 只打印兩次?

為什么 Hello 只打印兩次?

繁花如伊 2023-01-04 16:41:43
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'].


這暗示了一條規則:盡量不要在代碼中的任何地方導入正在運行的模塊。


查看完整回答
反對 回復 2023-01-04
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

它只打印兩次,因為一個模塊實際上只加載了一次。這可以防止可能的未綁定遞歸。所以你的打印語句被導入的模塊執行一次,主程序執行一次。



查看完整回答
反對 回復 2023-01-04
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

由于您在 main 中導入 main 打印語句執行兩次,這就是 python 的工作方式



查看完整回答
反對 回復 2023-01-04
  • 3 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號