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

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

導入語句應該始終位于模塊的頂部嗎?

導入語句應該始終位于模塊的頂部嗎?

LEATH 2019-06-26 15:47:17
導入語句應該始終位于模塊的頂部嗎?Pep 08各國:導入總是放在文件的頂部,就在任何模塊注釋和文檔字符串之后,在模塊全局和常量之前。但是,如果我所導入的類/方法/函數僅在少數情況下使用,那么在需要時進行導入肯定更有效嗎?這不是:class SomeClass(object):     def not_often_called(self)         from datetime import datetime         self.datetime = datetime.now()比這個更有效率?from datetime import datetimeclass SomeClass(object):     def not_often_called(self)         self.datetime = datetime.now()
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

我采用的做法是將所有導入放在使用它們的函數中,而不是放在模塊的頂部。

我得到的好處是能夠更可靠地重構。當我將一個函數從一個模塊移到另一個模塊時,我知道該函數將繼續與它的所有遺留測試完整地一起工作。如果我的導入位于模塊的頂部,當我移動一個函數時,我會發現我最終花費了大量的時間來完成新模塊的導入。重構IDE可能會使這一點變得無關緊要。

正如其他地方所提到的,有一個速度懲罰。我在我的申請中測量了這一點,發現它對我的目的來說是微不足道的。

能夠在不訴諸搜索的情況下看到所有模塊依賴項(例如grep)也是很好的。但是,我關心模塊依賴關系的原因通常是因為我正在安裝、重構或移動包含多個文件的整個系統,而不僅僅是一個模塊。在這種情況下,我無論如何要執行一個全局搜索,以確保我有系統級的依賴項。因此,我沒有找到全球進口來幫助我理解實踐中的一個體系。

我通常把進口sys內部if __name__=='__main__'檢查并傳遞參數(如sys.argv[1:])main()功能。這讓我可以用main在這樣的情況下sys還沒有進口。


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 659 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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