📜  跨文件的 python 全局变量 - Python (1)

📅  最后修改于: 2023-12-03 15:12:15.404000             🧑  作者: Mango

跨文件的 Python 全局变量

在 Python 中,全局变量指的是在所有函数外定义的变量。这些变量可以在任何函数中访问和修改,但是在函数内部对它们的修改不会影响它们在其他函数中的值。

跨文件的 Python 全局变量指的是在不同的 Python 文件中定义的全局变量。由于 Python 的模块系统设计,每个文件都被视为一个独立的模块,因此在一个文件中定义的全局变量在另一个文件中是不可见的。但是,有时候我们需要在一个文件中定义的全局变量被其他文件使用和修改。在这种情况下,我们需要采用一些技巧来实现跨文件的 Python 全局变量。

方案一:使用全局变量的引用

在 Python 中,我们可以在一个文件中定义一个全局变量,并将它的引用作为参数传递给其他文件的函数。通过这种方式,其他文件中的函数就可以使用和修改该全局变量了。

# file1.py
global_var = "Hello, world!"
def func():
  print(global_var)

# file2.py
from file1 import global_var, func 
def modify():
  global_var = "Hi, there!"
  func()

modify()  # 输出 "Hello, world!"

在这个例子中,我们在 file1.py 中定义了一个全局变量 global_var 和一个打印 global_var 的函数 func。在 file2.py 中,我们通过 from file1 import global_var, func 的方式导入了两个函数,并定义了一个新的函数 modify。在 modify 函数中,我们尝试修改 global_var 的值,然后调用 func 函数打印 global_var 的值。但是实际上,该函数只会输出 "Hello, world!",因为我们没有真正地修改 file1.py 中的全局变量。相反,我们只是在文件2中定义了一个新的同名全局变量。

方案二:使用模块级别的全局变量

另一个方案是使用模块级别的全局变量,在模块中定义一个全局字典,用来存储跨文件共享的变量。

# global_vars.py
shared_data = {}

# file1.py
from global_vars import shared_data

shared_data["var"] = "Hello, world!"
def func():
  print(shared_data["var"])

# file2.py
from global_vars import shared_data

shared_data["var"] = "Hi, there!"
from file1 import func
func()  # 输出 "Hi, there!"

在这个例子中,我们在 global_vars.py 中定义了一个字典 shared_data,用来存储跨文件共享的变量。在 file1.py 中,我们从 global_vars 中导入 shared_data,并使用 shared_data 来存储一个名为 var 的变量。在 func 函数中,我们打印 shared_data 中名为 var 的变量。在 file2.py 中,我们通过 shared_data 来修改 var 的值,并从 file1 中导入 func 函数打印 var 的值。在这种情况下,我们成功地实现了跨文件的 Python 全局变量。

总结

虽然 Python 没有提供直接实现跨文件的全局变量的机制,但是我们可以采用各种技巧来解决这个问题。不同的方案适用于不同的场景。在实际使用中,我们需要根据具体的需求选择合适的方案。