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

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

作為腳本運行時,為什么源/字節代碼文件不作為模塊導入?

作為腳本運行時,為什么源/字節代碼文件不作為模塊導入?

犯罪嫌疑人X 2023-08-22 10:17:26
來自導入系統的 Python 文檔(粗體強調是我的):5.8.?特別考慮__main__該__main__模塊是相對于 Python 導入系統的特例。正如其他地方所指出的,該__main__模塊在解釋器啟動時直接初始化,非常類似于sys和builtins。然而,與這兩個不同的是,它嚴格來說并不符合內置模塊的資格。這是因為初始化的方式__main__取決于調用解釋器的標志和其他選項。5.8.1.?__main__.__spec__根據__main__初始化方式,__main__.__spec__適當設置或設置為None。當Python使用該-m選項啟動時,__spec__被設置為相應模塊或包的模塊規范。當模塊作為執行目錄、zip 文件或其他條目的一部分加載__spec__時也會填充。__main__sys.path在其余情況下__main__.__spec__設置為None,因為用于填充 的代碼__main__不直接與可導入模塊對應:互動提示-c選項從標準輸入運行直接從源文件或字節碼文件運行請注意,這__main__.__spec__始終是None最后一種情況,即使該文件在技術上可以直接作為模塊導入。-m如果需要有效的模塊元數據,請使用該開關__main__。另請注意,即使__main__與可導入模塊相對應并__main__.__spec__進行相應設置,它們仍然被視為不同的模塊。這是因為受if __name__ == "__main__":檢查保護的塊僅在模塊用于填充__main__命名空間時執行,而不是在正常導入期間執行。作為腳本運行時,為什么源/字節代碼文件不作為模塊導入?
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

正如文檔中所指定的,當作為腳本( )運行時,源/字節代碼文件不會作為模塊導入,python <file path>因為將代碼作為模塊-m運行已經是參數 ( )的目的python -m <module name>。



查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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