这两个进口有什么区别?

时间:2011-08-23 16:19:42

标签: python

以下2个导入语句有一些区别吗?或者同样的事情?

from package import *

import package

2 个答案:

答案 0 :(得分:12)

from package import *将所有内容从包导入本地命名空间;建议不要这样做,因为它可能会引入不需要的东西(比如覆盖本地的东西)。这是一个快速而方便的导入工具,但如果情况严重,您应该使用from package import X,Y,Zimport package语法。

import package将所有内容从包导入本地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()

希望这会有所帮助:)

答案 1 :(得分:3)

不同之处在于使用包名称空间。

from package import *
class_in_package()

VS

import package
package.class_in_package()