Python 四大内置函数全景对比
一、核心速查表函数返回类型本质含义是否有值主要用途常见坑点vars(obj)dictobj.__dict__✅ 有值查看/修改对象的实例属性仅限有__dict__的对象dir(obj)list[str]对象的所有属性名❌ 无值探索对象“有什么”不包含值顺序无意义locals()dict当前局部作用域变量表✅ 有值查看当前函数/模块的局部变量函数内修改不一定生效globals()dict当前全局作用域变量表✅ 有值查看/修改全局变量模块级别才是真正的全局二、逐个深度拆解1️⃣vars()——「对象的属性字典」✅ 核心定义vars(obj)obj.__dict__返回对象的可写属性字典✅ 适用对象自定义类的实例类本身模块❌ 不适用对象vars(1)vars(abc)vars([1,2])原因内置类型没有__dict__✅ 经典示例classPerson:def__init__(self,name):self.namename pPerson(Alice)print(vars(p))# {name: Alice}print(p.__dict__)# {name: Alice}⚠️ 重要特性dvars(p)d[age]18print(p.age)# 18原地修改✅返回的是同一个 dict不是拷贝2️⃣dir()——「对象的属性清单」✅ 核心定义返回一个字符串列表列出对象“能访问到的所有属性名”✅ 特点包含实例属性类属性继承的方法魔术方法__xxx__不包含属性值✅ 示例classA:x1deffoo(self):passaA()print(dir(a))# [__class__, __delattr__, ..., foo, x]✅ 调试神器print([xforxindir(obj)ifnotx.startswith(__)])⚠️ 注意dir(int)# 能看到 int 的所有方法vars(int)# ✅ 有类属性vars(1)# ❌ 报错✅dir()永远不报错3️⃣locals()——「当前局部作用域」✅ 核心定义返回当前作用域中所有“局部变量”组成的字典✅ 不同场景的行为① 在模块顶层a1b2print(locals()isglobals())# True② 在函数内部deffoo():x10y20print(locals())foo()# {x: 10, y: 20}⚠️ 超级重要面试高频deffoo():x10locals()[x]99print(x)# 10不会变✅函数中的locals()是只读快照❌ 修改不会影响真实局部变量4️⃣globals()——「当前全局作用域」✅ 核心定义返回当前模块命名空间的字典✅ 特点包含全局变量导入的模块定义的类和函数可写✅ 示例x100defbar():globals()[x]999bar()print(x)# 999 ✅✅ 动态创建全局变量慎用globals()[new_var]123print(new_var)# 123三、四者关系一张图逻辑视角作用域 / 对象 ├── 模块 │ ├── globals() → 模块级变量 │ ├── locals() → 同 globals() │ ├── vars() → 模块.__dict__ │ └── dir() → 模块所有属性 │ ├── 函数 │ ├── globals() → 模块级 │ ├── locals() → 函数局部变量只读 │ └── dir() → 当前作用域可见名字 │ └── 对象 ├── vars(obj) → 实例属性字典 └── dir(obj) → 所有可访问属性名四、一句话记忆法vars 属性字典有值dir 属性名单有名locals 眼前变量局部globals 文件级变量全局五、常见面试 实战问答Q1vars()和dir()哪个更常用✅调试用vars()探索用dir()Q2为什么函数里改locals()没用✅ 因为 CPython 的局部变量是静态槽位不是 dictQ3__slots__为什么不能用vars()✅ 因为__slots__禁用了__dict__Q4globals()能改别人模块吗❌ 不能只能改当前模块六、终极对照示例x1classDemo:y2def__init__(self):self.z3dDemo()print(vars(d))# {z: 3}print(dir(d))# [... y, z]print(locals())# 包含 x, Demo, dprint(globals())# 同 locals()

相关新闻

架构师转型 AI 解决方案架构师:从搭系统到设计“智能系统“

架构师转型 AI 解决方案架构师:从搭系统到设计“智能系统“

方案汇报会上,我自信满满地展示了一套智能客服系统的架构设计。 API 网关 → 业务服务 → 数据库 → 缓存。负载均衡、限流、熔断、监控,该有的都有。🏗️ CTO 看了一眼,点了点头,然后问了几个问题: “大模…

2026/7/9 3:29:49阅读更多 →
Java 转大模型开发:从问题定位到方案落地,普通人也能照着做

Java 转大模型开发:从问题定位到方案落地,普通人也能照着做

聊《Java 转大模型开发:从问题定位到方案落地,普通人也能照着做》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断…

2026/7/9 3:29:49阅读更多 →
第一次了解锡纸碗,需要先分清哪些产品边界?

第一次了解锡纸碗,需要先分清哪些产品边界?

把样品真正装进食品以后,碗口过高、底部形态不合适或摆放过满,可能影响热风通过这个问题会很快出现。理解锡纸碗时,可以从产品形态、食品场景、使用边界和样品确认四个方面拆开看。1、先把概念落到具体包装形态锡纸碗不能只理解成一个泛泛的包…

2026/7/9 3:29:49阅读更多 →
领英好友乱成一锅粥?用这个分组备注功能,B2B 获客效率翻倍|附干货

领英好友乱成一锅粥?用这个分组备注功能,B2B 获客效率翻倍|附干货

领英好友乱成一锅粥?用这个分组备注功能,B2B 获客效率翻倍|附干货做外贸、B2B 拓客、猎头的朋友都懂:领英加了几百上千好友,原生不支持分组、不能备注,聊过的客户、意向代理、待跟进线索全混在一起&#xf…

2026/7/9 4:30:01阅读更多 →
Cursor AI × Angular开发闭环(企业级工程实践大揭秘):从Prompt设计到CI/CD自动集成

Cursor AI × Angular开发闭环(企业级工程实践大揭秘):从Prompt设计到CI/CD自动集成

更多请点击: https://kaifayun.com 第一章:Cursor AI Angular开发闭环全景图 Cursor AI 与 Angular 的深度协同,正在重塑前端工程化开发范式。它不仅提供智能补全与上下文感知的代码生成能力,更通过本地 LLM 驱动的实时反馈机制…

2026/7/9 4:30:01阅读更多 →
LangChain Expression Language:声明式链式调用的底层执行模型剖析

LangChain Expression Language:声明式链式调用的底层执行模型剖析

LangChain Expression Language:声明式链式调用的底层执行模型剖析 一、深度引言与场景痛点 大家好,我是赵咕咕。 当你用 LangChain 写 AI 应用时,大概率碰到过这种困惑:同样的 prompt,直接用 OpenAI SDK 调用能正常工…

2026/7/9 4:30:01阅读更多 →
网络安全含金量最高的5本证书,考完直接涨薪30%

网络安全含金量最高的5本证书,考完直接涨薪30%

📜 选对证书 少走3年弯路考证之前,先搞清楚一件事网络安全行业更重视技能水平,而非学历和出身。但证书的意义在于:简历筛选的敲门砖:HR搜索关键词时直接命中招投标的硬性门槛:团队持证数量直接影响项目中标…

2026/7/9 4:30:01阅读更多 →
做完三个极简小工具,我最大的感受是:咕咕嘎嘎

做完三个极简小工具,我最大的感受是:咕咕嘎嘎

做了几个很小的随机工具后,我才发现小工具也不好做 我最近在做一个叫 WheelPage 的网站。 里面没有什么复杂功能,主要就是几个在线随机工具:转盘、3D 骰子、抛硬币。 一上来做这些东西的时候,我其实有点轻敌。 转盘就是从几个…

2026/7/9 4:30:01阅读更多 →
会议发言人如何自动标注?CAM++ 声纹识别接入AI会议助手实践

会议发言人如何自动标注?CAM++ 声纹识别接入AI会议助手实践

一、引言:会议转写之后,为什么还要标注发言人? 在会议转写系统中,ASR 解决的是“说了什么”的问题。但在真实会议场景里,用户往往还会继续追问: 这句话是谁说的? 如果只有一整段连续转写文本&am…

2026/7/9 4:24:53阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
Three.js 着色器光效教程

Three.js 着色器光效教程

着色器光效 Shader Light ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 ShaderMaterial 自…

2026/7/9 0:04:37阅读更多 →
如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南 【免费下载链接】casemove A dedicated desktop app that enables you to move items in and out of storage units in CS2. 项目地址: https://gitcode.com/gh_mirrors/ca/casemove 还在为CS2存储单…

2026/7/9 0:04:37阅读更多 →
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M…

2026/7/9 0:04:37阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →