【问题标题】:Using and modifying global variables across multiple modules in Python在 Python 中跨多个模块使用和修改全局变量
【发布时间】:2015-09-08 17:55:16
【问题描述】:

Python 是我最新的语言 (Python-2.6),我的背景是 C/C++。通常,我会创建一个全局变量,并能够在我的所有文件中修改和访问它。我正在尝试在 python 中实现相同的功能。

根据这篇文章:Python - Visibility of global variables in imported modules 我看到“Python 中的全局变量对于一个模块来说是全局的,而不是跨所有模块”。我有多个依赖于用户输入的变量,必须由四个不同的模块和主代码访问和修改,这就是我尝试在 Python 中使用全局(ish)变量的原因。

我有两个尝试来完成这项工作:

1) 如果我将代码与可修改的全局变量粘贴在我的主代码中,我会遇到“执行主模块两次”的问题,详情如下:http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html 该程序工作正常,除了被执行两次。

2) 如果我创建一个单独的模块并将变量放入一个函数中,我发现我的其他模块中有未定义的变量,我的代码会出错。从单步执行代码中,我看到当模块A可以访问/修改变量时,但是当模块B和模块C尝试使用它们时一切都会中断,因为修改没有保留。

如何利用 Python 来满足我的需求?我相信我的问题在于尝试使用全局变量和导入全局变量

【问题讨论】:

  • 我相信使用import module,然后使用module.variable = 42之类的语句,而不是from module import variable,可以用于跨模块共享变量。

标签: import scope global-variables global python-2.6


【解决方案1】:

为了解决这个问题,我停止尝试在我的主代码中跨多个模块使用全局变量,并停止导入单个变量。我基本上最终将moduleA(单个函数)放在了moduleB中。我在 moduleB 中为我需要的功能创建了一个类。主代码和 moduleC 现在可以访问这些函数。

尽管如此,在 moduleB 的函数中,我仍然使用全局变量。如果我将变量设为非全局变量,则会出现属性错误。

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2014-02-18
    • 2017-07-26
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多