Python 中跨脚本传递全局变量的方式多种多样,这里介绍一种比较优雅的方式。

两个脚本数据交互

脚本 1 中定义并初始化全局变量,并且定义全局变量赋值取值函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def _global_dict():
global _gd
_gd = {}

def set_value(key, value):
_gd[key] = value

def get_value(key):
try:
return _gd[key]
except Exception as e:
print("读取{}失败".format(key),e)

_global_dict()

脚本 2 中,直接导入脚本 1 即可实现初始化。

多脚本交互

专门设定一个脚本用于存放处理全局变量。

1
2
3
4
5
6
7
8
9
10
11
12
def _global_dict():
global _gd
_gd = {}

def set_value(key, value):
_gd[key] = value

def get_value(key):
try:
return _gd[key]
except Exception as e:
print("读取{}失败".format(key),e)

需要注意的是,初始化函数只需要在任意脚本中执行一次即可。

在任意脚本导入该脚本,即可实现全局变量自由流转。

更多方法

用文件作为存储流转数据的中间环节,例如 json 文件,在此不再一一叙述。

测试脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 测试脚本 1
from tkinter import *

def _global_dict():
global _gd
_gd = {}

def set_value(key, value):
_gd[key] = value

def get_value(key):
try:
return _gd[key]
except Exception as e:
print("读取{}失败".format(key),e)

class tk_win:
def __init__(self):
self.root = Tk()
self.root.geometry("300x400")
Button(self.root, text="Exit",command=self.quit, height=2, width=15).pack(padx=10, pady=10)
self.root.mainloop()
def quit(self):
# _global_dict()
print(_gd)
set_value("a", get_value("a")+1)
print(get_value("a"))

_global_dict()

# 测试脚本 2
import <脚本 1>
tk_win.set_value("a",11)
tk_win.tk_win()
print(tk_win.get_value("a"))

⚓ Carl Zhao
🏢 逍遥科技有限公司
💭 曾经也是追光少年,然而少年归来已不再是少年,但依然在追光的路上。
📧 邮箱:1005513510@qq.com