【问题标题】:Does python execute imports on importationpython是否在导入时执行导入
【发布时间】:2013-09-26 13:02:42
【问题描述】:

假设我有一个名为 module1 的模块,其中包含以下内容:

def main():
    print 'K DawG'

main()

还有一个只有这一行的module2

import module1

基本上发生的情况是,当我运行module1 时它确实按预期打印K DawG,当我运行moudle2 时,除非我明确声明module1.main()应该' t 做任何事情,但它也会打印 K DawG

为什么会这样? python 是否运行导入期间导入的脚本?如果是这样,我怎样才能阻止这种情况发生?

【问题讨论】:

    标签: python python-import


    【解决方案1】:

    是的,导入时当然会执行脚本。这是一个你无法改变的事实,除非使用不同的编程语言。

    解决方法通常是这样的:

    if __name__ == '__main__':
        main()
    

    只有当你使用python whatever.py运行它时它才会执行,而不是在导入它时执行。


    要更详细地了解导入期间发生的情况:

    如果模块已经在sys.modules 中,则该条目将被返回。否则,模块的代码将被执行,并且该文件中的全局变量存储在sys.modules 条目中。所以只有在你第一次导入一个模块时,它的代码才会被执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多