python在导入时执行导入吗

python在导入时执行导入吗,python,python-import,Python,Python Import,假设我有一个名为module1的模块,具有以下内容: def main(): print 'K DawG' main() 和一个只有这一行的模块2: import module1 基本上发生的是,当我运行module1时,它会按预期打印K DawG,当我运行moudle2时,除非我显式地声明module1.main,否则它不应该做任何事情,但它也会打印K DawG 为什么会这样?python是否运行在导入期间导入的脚本?如果是这样,我如何才能阻止这种情况发生 是的,当然,脚本在导入

假设我有一个名为module1的模块,具有以下内容:

def main():
    print 'K DawG'

main()
和一个只有这一行的模块2:

import module1
基本上发生的是,当我运行module1时,它会按预期打印K DawG,当我运行moudle2时,除非我显式地声明module1.main,否则它不应该做任何事情,但它也会打印K DawG


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

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

解决方案通常是:

if __name__ == '__main__':
    main()
这样,只有在使用python whather.py运行它时才会执行它,但在导入它时不会执行

要更详细地了解导入过程中发生的情况,请执行以下操作:

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