Python 在多个位置导入同一模块
因此,从效率的角度来看,我很好奇。这是如何工作的: 假设我有以下脚本:Python 在多个位置导入同一模块,python,Python,因此,从效率的角度来看,我很好奇。这是如何工作的: 假设我有以下脚本: #home.py import os def homePrinter(): print os.environ["HOME"] if __name__ == '__main__': homePrinter() #path.py import os print os.environ["PATH"] import home home.homePrinter() 很简单,我导入模块,然后运行homePr
#home.py
import os
def homePrinter():
print os.environ["HOME"]
if __name__ == '__main__':
homePrinter()
#path.py
import os
print os.environ["PATH"]
import home
home.homePrinter()
很简单,我导入模块,然后运行homePrinter()
命令,该命令运行os.environ[“HOME”]
但是,假设我将该脚本保存为home.py
,并在以下脚本中运行它:
#home.py
import os
def homePrinter():
print os.environ["HOME"]
if __name__ == '__main__':
homePrinter()
#path.py
import os
print os.environ["PATH"]
import home
home.homePrinter()
现在,当我运行
path.py
文件时,它导入操作系统,当我导入home.py
时,它也导入操作系统。python如何处理两次导入的相同模块 Python将每次导入都放在sys.modules
中,因此下次尝试导入时,只需从sys.modules
中获取导入的模块,而无需重新读取文件
下面是一个例子:
鸡蛋.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
print 'this is spam'
spam.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
print 'this is spam'
输出:
Importing spam
this is spam
Importing spam again
Removing spam from sys.modules and importing again
this is spam