2011-08-23 84 views
5

以下2個導入語句有一些區別嗎?或者只是一樣的東西?這2個進口有什麼區別?

from package import * 

import package 
+0

他們有很大的不同,請參閱[導入的Python模塊(http://effbot.org/zone/import-confusion.htm)。 –

回答

12

from package import *從軟件包導入到本地命名空間;這是不推薦的,因爲它可能會引入不需要的東西(比如覆蓋本地的函數)。這是一個快速而方便的導入工具,但如果情況變得嚴重,則應使用from package import X,Y,Zimport package語法。

import package從包輸入到本地package對象的所有內容。所以如果包實現something()功能,您將使用package.something()

此外,應該討論的另一件事是嵌套名稱空間的情況:假設你有功能package.blabla.woohoo.func(),你可以import package.blabla.woohoo和使用package.blabla.woohoo.func(),但這太複雜了。相反,簡單的方法是from package.blabla import woohoo,然後使用woohoo.func()from package.blabla.woohoo import func,然後使用func()。我希望這是有道理的。如果沒有,這裏的一段代碼來說明:

import package.blabla.woohoo 
package.blabla.woohoo.func() 

from package.blabla import woohoo 
woohoo.func() 

from package.blabla.woohoo import func 
func() 

希望這有助於:)

3

的區別是使用的包命名空間。

from package import * 
class_in_package() 

VS

import package 
package.class_in_package()