Python中的全局变量/共享数据

使用类属性

可以在模块间共享数据

global_vars.py:

1
2
class GlobalVars:
global_variable = "Hello, World!"

main.py:

1
2
3
4
5
6
7
8
9
from global_vars import GlobalVars

def main():
print(GlobalVars.global_variable) # 输出: Hello, World!
GlobalVars.global_variable = "New value"
print(GlobalVars.global_variable) # 输出: New value

if __name__ == "__main__":
main()

使用 Singleton 模式

如果你需要确保某个类只有一个实例,并且提供一个全局点来访问它,可以使用 Singleton 模式。

可以在模块间共享数据

singleton.py:

1
2
3
4
5
6
7
8
class Singleton:
_instance = None

def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
cls._instance.global_variable = "Hello, World!"
return cls._instance

main.py:

1
2
3
4
5
6
7
8
9
10
11
12
from singleton import Singleton

def main():
s1 = Singleton()
print(s1.global_variable) # 输出: Hello, World!
s1.global_variable = "New value"

s2 = Singleton()
print(s2.global_variable) # 输出: New value

if __name__ == "__main__":
main()

使用 global 关键字

只能在模块内不同函数间共享

global 关键字用于声明一个变量是全局变量,但它只能在当前模块中生效。也就是说,global 关键字的作用范围仅限于当前模块(Python 文件)。

在函数内部,如果你想修改全局变量,可以使用 global 关键字。

main.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
global_variable = "Hello, World!"

def modify_global():
global global_variable
global_variable = "New value"

def main():
print(global_variable) # 输出: Hello, World!
modify_global()
print(global_variable) # 输出: New value

if __name__ == "__main__":
main()