如何获取Python文件中locals()与globals()的解析树(字符串/终端输出形式)
获取Python中locals()/globals()的结构化输出方法
1. 基础字符串输出
直接通过str()或repr()将字典转换为字符串,适合快速查看内容:
# 打印globals()的字符串形式 print(str(globals())) # 打印locals()的字符串形式 print(repr(locals()))
2. 美观格式化输出(推荐)
使用Python内置的pprint模块,自动对嵌套结构做缩进、换行处理,输出更易读的层级内容:
import pprint # 格式化打印globals() pprint.pprint(globals()) # 格式化打印locals() pprint.pprint(locals())
3. 树形结构展示
如果需要更直观的树形层级,可以自定义递归遍历函数,用符号标识层级关系:
def print_var_tree(obj, indent=0, branch=""): indent_pad = " " * indent if isinstance(obj, dict): for key, val in obj.items(): print(f"{indent_pad}{branch}{key}:") print_var_tree(val, indent + 1, "├─ ") elif isinstance(obj, (list, tuple)): for idx, item in enumerate(obj): print(f"{indent_pad}{branch}[{idx}]:") print_var_tree(item, indent + 1, "├─ ") else: print(f"{indent_pad}{branch}{repr(obj)}") # 以树形结构打印globals() print_var_tree(globals())
4. 输出到文件或保存为字符串
如果需要将结果保存为字符串或文件,可借助io模块或文件操作实现:
import io import pprint # 保存为字符串 output_buffer = io.StringIO() pprint.pprint(globals(), stream=output_buffer) result_str = output_buffer.getvalue() # 保存到本地文件 with open("globals_output.txt", "w") as f: pprint.pprint(globals(), stream=f)
你当前获取的globals()内容是Python主模块初始化后的默认全局变量集合,包含内置模块、加载器等基础环境信息,属于正常的初始全局环境。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

