Python 在两个不同的模块中从同一模块导入同一对象:
模块1.py:Python 在两个不同的模块中从同一模块导入同一对象:,python,object,module,namespaces,Python,Object,Module,Namespaces,模块1.py: from somemod import something import module2 模块2.py: from somemod import something 模块1中的某物是否与模块2中的某物完全相同 例如,如果在导入模块2之前,模块1将执行something.val=10。模块2是否可以通过执行操作来获取值。val?或者它得到了一个不同的对象 不同的问题:导入是否执行导入的模块,即使该模块已在解释器会话中导入到其他模块中? 另外,如果模块1已经导入了某个对象,是否需
from somemod import something
import module2
模块2.py:
from somemod import something
模块1中的某物
是否与模块2中的某物
完全相同
例如,如果在导入模块2之前,模块1将执行something.val=10
。模块2是否可以通过执行操作来获取值。val
?或者它得到了一个不同的对象
不同的问题:导入
是否执行导入的模块,即使该模块已在解释器会话中导入到其他模块中?
另外,如果模块1已经导入了某个对象,是否需要从somemod导入模块2中的某个对象。模块,就像Python中的其他东西一样,是存在于内存中并由名称引用的对象。import
语句做两件事:一是如果请求的模块还不存在,则执行导入文件中的代码;二是使其作为模块可用。后续的导入语句将跳过第一步。这意味着在module1
中,名称module1.something
和module1.module2.something
都是指第一次导入somemod
时创建的同一个对象。因此在python解释器会话中,模块只能执行一次?这是正确的。假设一个模块中的代码只执行一次要简单得多,不管它从其他模块导入多少次。如果我从两个不同的类导入使用pip安装的相同模块,它不会比只导入一次消耗更多内存,对吗?