【发布时间】:2021-06-24 13:58:18
【问题描述】:
假设我们有模块 A、B 和 C,并且该模块 C 在模块范围内有一些变量 X。
A 导入 B,后者(出于自身目的)导入 C。 A 也直接导入C。
如果A 改变了C.X 的值,那会改变B 看到的C.X 的值吗?同样,如果B 更改其C.X 的值,是否会更改A 看到的值?
换句话说,当一个模块被多次导入同一个解释器上下文时,该模块命名空间中的可变变量是否有效地共享内存?
【问题讨论】:
-
您在描述代码并要求我们编写它(无论是在物理上还是在我们的头脑中)。如果您实际编写代码,看看它做了什么,然后在这里询问您是否不明白发生了什么,您更有可能得到响应。
-
@BoarGules 我在问一个应该在语言规范中明确指定的理论问题,并且(如果不是)很可能在不同的实现中不一致。在本地尝试不会告诉我它在(比如说)2.x 和 3.x 之间是否不同,也不会告诉我它是否首先按照规范实现。