import modx和modx import *有什么区别?

时间:2011-02-26 00:38:47

标签: python module import

如果我要导入一些名为modx的模块,那么与说

有什么不同
from modx import *

不是所有的内容都不是从每种方式导入的吗?这只是为了澄清而在python中。

3 个答案:

答案 0 :(得分:36)

如果您import somemodule可以通过somemodule.someglobal获得所包含的全局变量。如果你from somemodule import *所有的全局变量(或者__all__中列出的全局变量)都将成为全局变量,即你可以使用someglobal访问它们而不需要模块名称。< / p>

不鼓励使用from module import *,因为它会使全局范围变得混乱,如果从多个模块导入内容,则可能会发生冲突并覆盖现有的类/函数。

答案 1 :(得分:17)

如果a定义a.ba.c ...

import a
a.b()
a.c()

VS

from a import b
b()
c() # fails because c isn't imported

VS

from a import *
b()
c()

请注意,from foo import *通常不赞成:

  1. 它将事物放入全局命名空间,而不会给你很好的控制
  2. 它可能导致冲突,到期到全局命名空间中的所有内容
  3. 它不清楚当前文件中实际定义的内容,因为它定义的内容列表可能会根据导入的内容而有所不同。

答案 2 :(得分:0)

许多常见问题解答的常见问题......这里有一个:http://effbot.org/zone/import-confusion.htm

基本上回答你的具体问题第二种形式(from modx import *)你只得到modx中的公共项目