我目前从我编写的较大文件中导入一个函数 - 例如:
from my_other_file import my_function
我导入的函数使用在my_other_file
内的其他位置初始化的字典(即在我的代码顶部我将CVS文件导入字典,然后由函数使用)。
如果我反复调用此函数(例如在迭代循环时),是否每次都会重复重新生成字典? (或者一旦它被初始化,它可以在以后通过该函数调用)。我问,因为字典来自的CSV文件是相当大的(50MB),因此我怀疑如果必须在每次调用函数时读取该文件,我的代码将是非常低效的。如果它通常会被重新初始化,那么阻止这种情况发生的方法是什么呢?
答案 0 :(得分:3)
不,多次导入模块只执行一次模块代码。
导入实际上只是创建对导入代码的导入名称的引用。 正在加载模块仅执行一次,结果存储在sys.modules
中,以支持名称导入。
请参阅import
statement documentation:
基本
import
语句(无from
子句)分两步执行:
- 找到一个模块,加载并初始化如有必要
- 在
醇>import
语句出现的范围的本地名称空间中定义一个或多个名称。
强调我的;加载后,您无需再次加载。