locals()

locals() 是 Python 的内置函数,用于返回当前作用域的局部变量字典(键值对集合)。该字典动态映射所有局部变量名到其值,并具有以下核心特性:

一、基础用法

def example():
    x = 10
    y = "text"
    print(locals())  输出: {'x': 10, 'y': 'text'}

example()

二、关键特性

  1. 动态性
    返回的字典会实时反映局部变量变化:

    def dynamic():
        print(locals())  {}
        a = 1
        print(locals())  {'a': 1}
    
  2. 作用域差异

    位置 等效操作 说明
    函数内部 当前函数的局部变量 包含参数和内部定义变量
    全局作用域 等同 globals() 返回全局变量字典
  3. 修改限制
    对返回字典的修改不一定影响实际变量:

    def test():
        var = 10
        loc = locals()
        loc['var'] = 20  不保证修改实际变量
        print(var)       可能输出 10 或 20(实现相关)
    

三、典型应用场景

  1. 调试变量检查

    def complex_calculation(a, b):
        temp = a * b
        快速查看所有中间变量
        print(locals())  
        return temp ** 2
    
  2. 动态代码生成

    def generate_code():
        vars = {'x': 5, 'y': 3}
        locals().update(vars)  动态注入变量
        print(x + y)  输出 8
    
  3. globals() 对比

    函数 作用域 可修改性 典型用途
    locals() 当前局部作用域 ❌ 受限 调试/动态变量检查
    globals() 全局作用域 ✅ 完全可修改 全局变量管理

四、注意事项

  • 在模块级作用域,locals()globals() 返回相同字典
  • 避免在生产代码中依赖修改 locals() 结果(行为因解释器而异)
  • 性能敏感场景慎用(字典生成有开销)

提示:调试推荐使用 IDE 变量监视器或 pdb 模块,比直接操作 locals() 更可靠。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容