2016-12-03 119 views
1

我有一個關於Python的行爲問題。來自C背景,我明白,模塊是不一樣的頭文件。模塊行爲中的Python導入包

這裏有兩個腳本:

Module1.py

#!/usr/bin/python3 
import urllib 

Driver.py

#!/usr/bin/python3 
import module1 

我預計第一行爲是與裏面的模塊1一起被引進的urllib驅動程序。但是,這不是我所經歷的行爲。是否正確投入

#!/usr/bin/python3 
import urllib 
import module1 

或者是否導致urllib導入兩次?

我的是我可以這樣做

from module1 import urllib 

的文件中讀取,但似乎是太多寫作

回答

0

我預計第一行爲是爲urllib被一起導入與驅動程序內的module1

爲什麼要這樣呢?您已在module1的名稱空間(模塊字典)內導入urllib,而不是在Driver的名稱空間中導入urllib

urllib是進口的,但在module1,嘗試:

import Driver 
Driver.module1.urllib 

,看到沒有NameError s的提高,urllib是存在的。

是否會導致urllib導入兩次?

不,Python會看到urllib已經進口的(內部sys.modules偷看)和剛剛創建的命名空間或Driverurllib的條目。

+0

好的,這是有道理的。在C中,如果我將某個庫導入到頭文件並將頭文件導入到驅動程序中,則會導入整個頭文件,包括導入的庫。謝謝你澄清區別。 – Shadowfax

+0

不要嘗試和繪製'C'和'Python' @Shadowfax之間的相似之處。 :-)儘管Python中最流行的實現是在'C'中實現的,它是一種完全不同的語言,具有不同的語義!仔細閱讀[參考手冊](https://docs.python.org/3/reference/index.html),它會清除您可能遇到的大多數問題。 –

+1

好的,謝謝! @Jim – Shadowfax