2012-03-06 19 views
2

假設我讀取其他人使用「from import *」編寫的代碼,如何確定函數來自哪個模塊?這是有人因爲「從進口*」而皺眉嗎?如何閱讀使用「from <module> import *」的代碼?

+0

這可能是一個很好的答案:http://stackoverflow.com/a/3615206/770830 – bereal 2012-03-06 11:16:10

+0

進入一個Python shell,運行(不可否認的樣式)導入*,然後做str(功能) - 這將告訴你它來自哪個模塊...然後用適當的進口替換;) – Hoff 2012-03-06 11:28:47

+0

我只是做了這個..它似乎沒有做你說的。 – talloaktrees 2012-03-06 12:49:08

回答

5

是的,這就是爲什麼from <module> import *被認爲是不好的風格。你可以做的是逐個刪除這些*進口,然後檢查你得到的是哪一個NameError,並通過顯式導入逐一解決它們。

+2

好主意。當然,如果'from import *'碰巧覆蓋了本地命名空間中的某個對象的名字,這當然會崩潰。那麼在刪除'import'語句之後,你會遇到所有可能的錯誤。這是另一個不使用這種構造的理由。 – 2012-03-06 11:16:54

3

from ... import *是由PEP8(python風格指南)不推薦的壞風格。除編輯代碼(將from ... impot *替換爲'import ...'並查找錯誤)之外,沒有辦法知道哪個模塊是功能的。不幸的是,這些錯誤只會在執行代碼的相應部分時纔會發生。