【问题标题】:How do I put all of my active modules in the same 'namespace' in python?如何在 python 中将所有活动模块放在同一个“命名空间”中?
【发布时间】:2016-12-22 19:21:21
【问题描述】:

我的“/”目录如下所示。

Launch.py
Services.py
Server.py
ServerHelper.py
Packetlib.py

Launch 运行时,Launch 会导入 Services 和 Server,后者会导入 Services,Serverhelper 会导入 Services、Services、Server 和 PacketLib,后者会导入 Services。

看到问题了吗?

这不仅是一种糟糕的代码组织方式,而且我需要在 Server 中定义一个变量,以便能够在 Services 和 PacketLib 中实时读取和修改。最重要的是,我在 3 个脚本中有 8 个这样的变量。

如何将所有导入的脚本放在同一个“命名空间”中,消除对虚假递归导入的需求,并允许“跨无限脚本的一个变量”执行模型,例如 C#?

【问题讨论】:

    标签: c# python namespaces global-variables code-organization


    【解决方案1】:

    递归导入应该没有任何问题。

    import' 和 'from xxx import yyy' 是可执行语句。他们 当正在运行的程序到达该行时执行。

    如果模块不在 sys.modules 中,则导入会创建新的 sys.modules 中的模块条目,然后执行模块中的代码。 在执行之前它不会将控制权返回给调用模块 已完成。

    如果一个模块确实存在于 sys.modules 中,那么导入只是返回 该模块是否已完成执行。那就是 循环导入可能会返回似乎部分是的模块的原因 空。

    【讨论】:

    • Python 隐式处理多个导入,不会两次导入。
    • 这就是上面所暗示的
    猜你喜欢
    • 2022-11-21
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2011-04-13
    • 2013-03-24
    相关资源
    最近更新 更多