2011-08-23 56 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()