You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python在VSCode调试与终端运行时__builtins__长度不同?

为什么VSCode调试模式下__builtins__的成员数量比终端运行时少?

核心原因是__builtins__在两种执行环境中的本质完全不同,和VSCode调试设置缺失无关:

  • 终端直接运行脚本时:__builtins__指向完整的builtins模块(<module 'builtins' (built-in)>)。dir(__builtins__)会列出这个模块的所有属性,包括所有内置函数、异常、基础类型、特殊常量等,所以数量达到156个。

  • VSCode调试模式下:__builtins__被调试器(debugpy,VSCode Python调试的后端组件)替换成了一个受限的字典/代理对象。调试器这么做是为了简化调试上下文,避免调试过程中因误操作不常用的内置成员引发意外,只暴露了print、len、str等高频使用的内置成员,所以dir(__builtins__)返回的数量只有45个左右。

你可以通过以下代码验证这个差异:

# 打印__builtins__的类型和具体内容
print(type(__builtins__))
print(__builtins__)
  • 终端运行时,输出会显示__builtins__是模块类型;
  • VSCode调试时,输出会显示它是字典或调试器自定义的内置对象类型,内容仅包含部分成员。

这种差异不会影响脚本的正常执行——当你调用内置函数或使用内置类型时,Python解释器会自动从真实的builtins模块查找,而非依赖__builtins__这个暴露的对象。如果需要在调试时访问完整的内置成员集合,直接导入builtins模块即可:

import builtins
print(len(dir(builtins)))  # 无论哪种运行方式,都会返回完整的成员数量(约156个)

内容的提问来源于stack exchange,提问作者Liang-Liang Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:40:25