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
| 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): print(_gd) set_value("a", get_value("a")+1) print(get_value("a"))
_global_dict()
import <脚本 1> tk_win.set_value("a",11) tk_win.tk_win() print(tk_win.get_value("a"))
|
⚓ Carl Zhao
🏢 逍遥科技有限公司
💭 曾经也是追光少年,然而少年归来已不再是少年,但依然在追光的路上。
📧 邮箱:1005513510@qq.com