Python 中字典键值对的变量名缩写语法详解
Python 原生不支持 JavaScript 风格的 {name, age} 这类键名与变量名自动映射的字典字面量缩写但可通过 locals()、inspect 或现代工具如 dataclasses/pydantic实现语义等效的简洁构造方式。 python 原生不支持 javascript 风格的 {name, age} 这类键名与变量名自动映射的字典字面量缩写但可通过 locals()、inspect 或现代工具如 dataclasses/pydantic实现语义等效的简洁构造方式。在 JavaScript 中当局部变量 name 和 age 已存在时可直接用对象简写语法创建等效对象 const name Alice, age 30;const person { name, age }; // ? 等价于 { name: name, age: age }而 Python 的字典字面量 不提供此类语法糖。以下写法是非法的会引发 SyntaxError# ? 错误Python 不允许这种省略键名的写法person {name, age} # → set literal, not dictperson {name: name, age: age} # ? 正确但冗长? 可行的替代方案1. 使用 locals() 函数封装轻量实用最接近原生体验的方式是封装一个辅助函数显式提取当前作用域中指定名称的变量def dictvars(*names): frame inspect.currentframe().f_back local_vars frame.f_locals global_vars frame.f_globals return { name: local_vars.get(name, global_vars.get(name)) for name in names }# 使用示例import inspectname Bobage 25person dictvars(name, age)print(person) # {name: Bob, age: 25}?? 注意依赖 inspect 会略微影响性能且在某些优化环境如 PyPy 或启用 -O 标志下可能受限生产环境建议仅用于开发/调试辅助。立即学习“Python免费学习笔记深入” VWO 一个A/B测试工具