python - 在 Python 中跨多个文件使用和设置全局变量

标签 python file import global

我有三个文件。在第一个中,我定义了全局变量。

# file1.py
ABC = 111

在第二个文件中,我更改了全局变量的内容。

# file2.py
from file1 import *

def set_value():
    global ABC
    ABC = 222

在第三个文件中,我尝试使用 file2.py 中定义的 set_value() 来更改全局变量的内容并打印它。

# file3.py

from file1 import *
from file2 import *

set_value()
print ABC

结果是 111 而不是 222。新值未在全局变量中设置。如何使用 file2.py 中的函数设置 file1.py 中的全局值?

最佳答案

from file1 import * 行做了两件事:

  1. 它将文件 file1.py 导入到模块缓存中。
  2. 它会创建本地命名空间中所有已定义符号的新引用。

由于您有单独的引用,因此无法更新模块中的引用。如果这些是可变变量,您可以更新它们并在模块本身中查看这些更新。例如,如果您有 ABC = [111],则可以执行 ABC[0] = 222,您就会看到更改。

如果你想改变模块本身,你需要使用模块的引用;模块是可变的!

# file2.py
import file1

def set_value():
    file1.ABC = 222

.

# file3.py

import file1
from file2 import *

set_value()
print file1.ABC

关于python - 在 Python 中跨多个文件使用和设置全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164663/

相关文章:

python - 用 pandas 和 numpy Python 替换列表推导式

Python Pandas 删除数据框中的空单元格

import - Unity 3D 多个 UV 集

android - 如何从外部网页访问本地数据?

python - 扩展 SignupForm 类的 allauth 问题

python - 如何计算 RandomForestRegression 中的 MSE 标准?

node.js - 如何在请求 Node 获取或 Node 中发送文件?

java - 如何获取路径选择器对话框以使用 GWT 保存文件

file - 可变网格制作器

android - SQLite 数据库浏览器 - 导入国家字体时出现问题