【问题标题】:how to have global variables among different modules in Python如何在 Python 中的不同模块之间拥有全局变量
【发布时间】:2010-02-19 13:28:51
【问题描述】:

我调查了python中全局变量的范围仅限于模块。但我需要范围在不同模块之间是全局的。有这样的事吗?我玩了__builtin__,但没有运气。

提前致谢!

【问题讨论】:

    标签: python scope global-variables


    【解决方案1】:

    您可以通过显式导入其他模块来访问全局变量。

    在模块foo:

      joe = 5
    

    在模块bar:

      from foo import joe
      print joe
    

    但请注意,不建议这样做。使用函数隐藏对模块变量的访问会更好。

    【讨论】:

    • 最好不要将可变状态存储在全局变量中,而是使用类。
    • @Eli Bendersky,您所说的“使用函数隐藏对模块变量的访问要好得多”是什么意思? @ Mike Graham,“使用课程”是什么意思?你怎么做才能得到他想要的?
    • @LWZ:我的意思是当一个模块让其他模块直接访问它的数据时,可能会导致难以调试的问题。如果出于某种原因绝对需要访问全局数据,则至少应提供 get/set 功能。这些函数使以后修改代码(例如,用其他东西替换全局数据)和在出现问题时进行调试变得更加容易。
    • @EliBendersky:谢谢,这很有帮助。
    【解决方案2】:

    Python 不支持在多个模块之间共享全局变量:这是一个特性。隐式修改远处使用的变量的代码令人困惑且无法维护。 真正的 解决方案是将所有状态封装在一个类中,并将其实例传递给任何必须修改它的对象。这可以使代码更清晰、更可维护、更可测试、更模块化和更可扩展。

    【讨论】:

      【解决方案3】:

      必须通过对范围的引用或在 globalnonlocal (3.x+) 指令之后写入本地以外的范围。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 2017-06-02
        • 2013-06-04
        • 1970-01-01
        相关资源
        最近更新 更多