【问题标题】:What is the difference between import modx and from modx import *? [duplicate]import modx 和 from modx import * 有什么区别? [复制]
【发布时间】:2011-07-04 16:46:31
【问题描述】:

如果我要导入一些名为 modx 的模块,那和说的有什么不同

from modx import *

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

【问题讨论】:

    标签: python module import


    【解决方案1】:

    如果您import somemodule,包含的全局变量将通过somemodule.someglobal 提供。如果您 from somemodule import * 其所有全局变量(或在 __all__ 中列出的变量,如果存在)将被设为全局变量,即您可以使用 someglobal 访问它们,而无需在其前面添加模块名称。

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

    【讨论】:

      【解决方案2】:

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

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

      对比

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

      对比

      from a import *
      b()
      c()
      

      请注意,from foo import * 通常不受欢迎,因为:

      1. 它将事物放入全局命名空间,而无需您进行精细控制
      2. 它可能会导致冲突,由于所有东西都在全局命名空间中
      3. 它不清楚当前文件中实际定义的内容,因为它定义的内容列表可能会因导入的内容而异。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2019-06-07
          • 2013-05-20
          • 2015-08-24
          • 2017-09-18
          • 2020-07-23
          • 1970-01-01
          • 2012-01-15
          • 2016-02-16
          • 2018-09-21
          相关资源
          最近更新 更多