2013-02-28 88 views
3

作爲一個新手,我開始喜歡幾乎默認情況下導入模塊,因爲我開始編寫某些東西時,只是因爲我調用了其中的某些函數(模塊如random,time,os和sys)。但是,這是否會影響性能?如果我只想在模塊中使用特定的功能,我是否更明確地詢問它,或者我應該不在意?導入模塊 - 多少是多少?

回答

6

當你做from module import name時,Python仍然需要運行module,所以在性能方面沒有區別。

一般來說,如果你只使用從模塊的一件事,在使用from x import y是好的,但在其他方面,使用import x然後x.y導致衝突的名字的機會較低。

原因是Python不專門處理函數和類。從模塊導入時,您所做的只是從該模塊獲取對象並使用它們。這很有用,因爲它使得模塊(以及類和函數)非常靈活,但它確實意味着Python必須在模塊可以從其導入之前運行整個腳本(當然,模塊編寫者可以通過使用if name == "main":成語來插入不應在導入時運行的代碼)。

+0

如果我使用「從模塊導入*」怎麼辦? – Kimomaru 2013-02-28 20:39:39

+0

@Kimomaru這通常是一個壞主意,除非模塊是專門爲它設計的。在大多數情況下,它只會污染你的命名空間,並且使代碼更難處理。當然,它仍然會像其他方法一樣加載整個模塊。 – 2013-02-28 20:40:17

+0

有趣。所以,最好儘可能具體,因爲它可以使事情保持有組織。我可以想象導入所有內容,然後意外地創建一個與導入的內容相同的函數 - 會導致問題。 – Kimomaru 2013-02-28 20:43:19