以下2个导入语句有一些区别吗?或者同样的事情?
from package import *
import package
答案 0 :(得分:12)
from package import *
将所有内容从包导入本地命名空间;建议不要这样做,因为它可能会引入不需要的东西(比如覆盖本地的东西)。这是一个快速而方便的导入工具,但如果情况严重,您应该使用from package import X,Y,Z
或import 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()