我的'/'目录看起来像这样。
Launch.py
Services.py
Server.py
ServerHelper.py
Packetlib.py
运行启动时,启动导入服务和服务器,导入服务和Serverhelper,导入服务的导入服务,服务,服务器和PacketLib。
查看问题?
这不仅仅是代码组织的一种可怕方式,但我需要在Server中定义的变量能够在Services和PacketLib中实时读取和修改。最重要的是,我在3个脚本中有8个这样的变量。
如何将所有导入的脚本放在同一个'命名空间'中,不再需要伪造的递归导入,并允许“无限脚本中的一个变量”执行模型,比如C#?
答案 0 :(得分:0)
递归导入不应该有任何问题。
进口'并且'来自xxx import yyy'是可执行语句。他们 在正在运行的程序到达该行时执行。
如果模块不在sys.modules中,则导入会创建新模块 sys.modules中的模块条目,然后执行模块中的代码。 在执行之前,它不会将控制权返回给调用模块 已经完成了。
如果sys.modules中存在模块,则只返回导入 该模块是否已完成执行。那就是 为什么循环导入可能返回看似部分的模块 空。