尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

python3 globals() 函数

python3 globals() 函数
📅 发布时间:2026/6/19 22:09:09

python3 globals() 函数

globals().items() 是 Python 中一个非常有用的内置函数组合,用于获取当前全局命名空间中的所有变量和它们的值。

基本用法

# 定义一些全局变量
x = 10
y = "hello"
z = [1, 2, 3]def my_func():return "I'm a function"class MyClass:pass# 查看全局命名空间
print("全局变量:")
for name, value in globals().items():print(f"{name}: {type(value).__name__}")

实际应用示例

示例1:查看所有内置函数和变量

# 查看所有以双下划线开头的内置属性
print("内置属性:")
for key, value in globals().items():if key.startswith('__'):print(f"{key}: {value}")

示例2:动态查找和操作变量

# 创建一些变量
var1 = 100
var2 = 200
var3 = 300# 动态查找所有以'var'开头的变量
print("以'var'开头的变量:")
for name, value in globals().items():if name.startswith('var'):print(f"{name} = {value}")

示例3:调试时查看变量状态

def debug_function():local_var = "inside function"# 在函数内部查看全局变量print("函数内部的全局变量:")for name, value in globals().items():if not name.startswith('__') and not callable(value):print(f"  {name}: {value}")debug_function()

示例4:动态创建和修改变量

# 动态创建变量
for i in range(5):globals()[f'dynamic_var_{i}'] = i * 10# 查看动态创建的变量
print("动态创建的变量:")
for name, value in globals().items():if name.startswith('dynamic_var'):print(f"{name} = {value}")# 动态修改变量
if 'dynamic_var_2' in globals():globals()['dynamic_var_2'] = 999print(f"修改后: dynamic_var_2 = {dynamic_var_2}")

示例5:清理特定变量

# 创建一些测试变量
temp1 = "to delete"
temp2 = "to keep"
important_var = "don't delete"# 删除所有以'temp'开头的变量
to_delete = []
for name in globals().keys():if name.startswith('temp'):to_delete.append(name)for name in to_delete:del globals()[name]print("删除后剩余的变量:")
for name in globals().keys():if not name.startswith('__'):print(f"  {name}")

注意事项

  1. 与 locals() 的区别
def compare_globals_locals():local_var = "I'm local"global global_varglobal_var = "I'm global"print("locals():")for k, v in locals().items():print(f"  {k}: {v}")print("\nglobals() 中的函数相关变量:")for k, v in globals().items():if k in ['local_var', 'global_var', 'compare_globals_locals']:print(f"  {k}: {v}")compare_globals_locals()
  1. 性能考虑
import time# globals() 调用有一定开销,避免在循环中频繁调用
start = time.time()
for _ in range(10000):g = globals()
end = time.time()
print(f"调用10000次耗时: {end-start:.4f}秒")
  1. 安全警告
# 危险:不要接受用户输入直接操作 globals()
user_input = "__import__('os').system('rm -rf /')"  # 恶意代码# 绝对不要这样做!
# exec(user_input, globals())  # 这会导致灾难性后果

实用技巧

技巧1:统计变量信息

def analyze_globals():"""分析全局命名空间"""g = globals()stats = {'total': len(g),'variables': 0,'functions': 0,'classes': 0,'modules': 0,'builtins': 0}for name, value in g.items():if name.startswith('__'):stats['builtins'] += 1elif callable(value):if isinstance(value, type):stats['classes'] += 1else:stats['functions'] += 1elif hasattr(value, '__spec__'):  # 模块stats['modules'] += 1else:stats['variables'] += 1return statsprint("全局命名空间分析:")
for key, value in analyze_globals().items():print(f"  {key}: {value}")

技巧2:创建配置管理器

class ConfigManager:@classmethoddef get_configs(cls, prefix='CONFIG_'):"""获取所有以指定前缀开头的配置变量"""configs = {}for name, value in globals().items():if name.startswith(prefix):config_name = name[len(prefix):].lower()configs[config_name] = valuereturn configs# 定义配置
CONFIG_DATABASE = "localhost"
CONFIG_PORT = 3306
CONFIG_DEBUG = True# 获取配置
configs = ConfigManager.get_configs('CONFIG_')
print("配置信息:", configs)

总结

globals().items() 是一个强大的工具,主要用于:

  • 调试:查看当前命名空间状态
  • 元编程:动态操作变量
  • 配置管理:收集配置信息
  • 清理工作:批量删除变量

重要提醒:

  • 谨慎使用,特别是在生产代码中
  • 避免接受外部输入操作 globals()
  • 理解其与 locals() 的区别
  • 注意性能影响,避免在关键循环中使用

https://www.jb51.net/python/344951d2c.htm

相关新闻

  • 自动化用户体验指标监控:提升软件测试的全新维度
  • Story-Adapter终极指南:5分钟快速上手长故事可视化工具
  • 如何快速掌握MediaPipeUnityPlugin:Unity开发者的完整集成指南

最新新闻

  • MPC8641D双核SoC:嵌入式网络设计的集成化与多核编程实战
  • 6月西安奢侈品回收,闲置奢侈品包包手表首饰变现前先看看这篇 - 钦扬网络
  • 2026年6月评价高的别墅外墙石材/本地石材厂家推荐泌阳县丰源石业,加厚抗冻板材,北方低温户外不开裂不剥落 - 品牌鉴赏师
  • MAC7200微控制器时钟与复位机制深度解析与实战配置
  • 2026年详尽评测:10款好用的降AIGC软件,部分无限免费降AI!必看干货 - 降AI小能手
  • 2026南京品牌首饰保值白皮书,旧款磨损首饰,均按市场实价变现 - 讯息早知道

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号