locals() 是 Python 的内置函数,用于返回当前作用域的局部变量字典(键值对集合)。该字典动态映射所有局部变量名到其值,并具有以下核心特性:
一、基础用法
def example():
x = 10
y = "text"
print(locals()) 输出: {'x': 10, 'y': 'text'}
example()
二、关键特性
-
动态性
返回的字典会实时反映局部变量变化:def dynamic(): print(locals()) {} a = 1 print(locals()) {'a': 1} -
作用域差异
位置 等效操作 说明 函数内部 当前函数的局部变量 包含参数和内部定义变量 全局作用域 等同 globals()返回全局变量字典 -
修改限制
对返回字典的修改不一定影响实际变量:def test(): var = 10 loc = locals() loc['var'] = 20 不保证修改实际变量 print(var) 可能输出 10 或 20(实现相关)
三、典型应用场景
-
调试变量检查
def complex_calculation(a, b): temp = a * b 快速查看所有中间变量 print(locals()) return temp ** 2 -
动态代码生成
def generate_code(): vars = {'x': 5, 'y': 3} locals().update(vars) 动态注入变量 print(x + y) 输出 8 -
与
globals()对比函数 作用域 可修改性 典型用途 locals()当前局部作用域 ❌ 受限 调试/动态变量检查 globals()全局作用域 ✅ 完全可修改 全局变量管理
四、注意事项
- 在模块级作用域,
locals()和globals()返回相同字典 - 避免在生产代码中依赖修改
locals()结果(行为因解释器而异) - 性能敏感场景慎用(字典生成有开销)
提示:调试推荐使用 IDE 变量监视器或
pdb模块,比直接操作locals()更可靠。