【问题标题】:What does "fresh module namespace" mean w.r.t. runpy?“新模块命名空间”是什么意思 w.r.t.流氓?
【发布时间】:2013-07-24 08:07:12
【问题描述】:

http://docs.python.org/2/library/runpy.html#runpy.run_module

我的问题是关于 run_module 文档的这一部分。

...然后在新的模块命名空间中执行。

什么是 python 中的“模块命名空间”? runpy 与 import 有何不同?

【问题讨论】:

    标签: python runpy


    【解决方案1】:

    每个模块都使用自己的一组全局变量执行,这些变量成为模块的属性。模块命名空间是模块的全局变量所在的位置; “在新的模块命名空间中执行”意味着“使用自己的全局变量环境执行”。

    Python 解释器仅在模块的代码第一次被导入任何给定程序时执行。进一步的导入语句只是返回现有的模块对象。当模块ab都导入模块cd时,这可以防止指数导入爆炸,这两个模块都导入ef等。这也意味着所有模块看到相同的版本,比如collections.defaultdict,所以类型检查的行为很直观。 runpy.run_module 说“运行这个模块中的代码,无论它是否已经被导入,并且不要将其视为导入。”如果你先run_module 一个模块然后__import__ 它,你从run_module 得到的字典将包含与你从__import__ 得到的模块中的对象非常相似但又不同的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-29
      • 2012-01-21
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多