避免在导入的模块中导入模块

时间:2018-10-05 02:50:18

标签: python python-3.x

如果我有两个文件:

file1.py,其中包含可以在不同文件之间共享的功能:

def log(x):
    return math.log(x)

file2.py

import file1
import math
print(file1.log(math.e))

但是,当我运行python file2.py时,出现以下错误:NameError: name 'math' is not defined。有一种方法可以避免在导入模块已经导入模块的情况下在导入模块中重新导入模块?

或者,在导入的模块中重新导入模块是否实际上会降低性能?我正在使用math进行演示,但是我导入的模块实际上需要一些时间才能导入(nltk

1 个答案:

答案 0 :(得分:2)

我会回答你的最后一个问题。 Python只会在第一次导入时执行一次导入工作。它在内部缓存。之后,如果另一个模块导入相同的模块,则会将其从缓存中快速拉出。因此,多次导入不会影响性能。

Python比您想象的要聪明。只需以显而易见的方式编写代码即可。