在几个地方导入相同的模块

时间:2014-05-01 10:06:59

标签: python

因此,从效率的角度来看,我很好奇。 Hows做到了这一点:

说我有以下脚本:

#home.py

import os

def homePrinter():
    print os.environ["HOME"]

if __name__ == '__main__':
    homePrinter()

很简单,我导入模块然后运行运行homePrinter()的{​​{1}}命令。

但是我们可以说我将该脚本保存为os.environ["HOME"]并在以下脚本中运行它:

home.py

现在,当我运行#path.py import os print os.environ["PATH"] import home home.homePrinter() 文件时,它会导入操作系统,当我导入path.py时,它也会导入操作系统。 python如何处理导入两次的同一模块?

1 个答案:

答案 0 :(得分:3)

Python将每个导入放在sys.modules中,以便下次尝试导入时,只需从sys.modules获取导入的模块,而不是重新读取文件。

以下是一个例子:

<强> eggs.py

import sys

print 'Importing spam'
import spam
print

print 'Importing spam again'
import spam
print

print 'Removing spam from sys.modules and importing again'
del sys.modules['spam']
import spam

<强> spam.py

print 'this is spam'

输出:

Importing spam
this is spam

Importing spam again

Removing spam from sys.modules and importing again
this is spam