惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
S
Schneier on Security
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cyberwarzone
Cyberwarzone
Apple Machine Learning Research
Apple Machine Learning Research
S
SegmentFault 最新的问题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
GbyAI
GbyAI
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
C
Cisco Blogs
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
B
Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
The Last Watchdog
The Last Watchdog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Project Zero
Project Zero
WordPress大学
WordPress大学
L
LINUX DO - 最新话题
F
Fortinet All Blogs
L
LINUX DO - 热门话题
PCI Perspectives
PCI Perspectives
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
The Hacker News
The Hacker News
爱范儿
爱范儿
O
OpenAI News
J
Java Code Geeks
T
The Exploit Database - CXSecurity.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 悠哉大斌

AI Agent 安全沙箱技术对比:E2B、Cube Sandbox 与 Docker Sandboxes linux 升级 claude code的坑 debian(WSL) apt 代理配置 linux内核之Namespaces、Cgroups、Capabilities、Seccomp和Landlock 大语言模型推理中的隐藏瓶颈及其解决方法 Docker Sandboxes 技术是什么,和docker容器有什么区别 什么是 Docker Agent以及一个Docker Agent示例 windows wsl 安装 Temurin® JDK claude Code 和 codex 作为编程代理,前者使用typescript开发,后者使用rust,他们的决策依据是什么 Java 并发编程发展史与 java.util.concurrent 全景解析 LLM 真的改变了编码风格吗? 如果人工智能会犯错且不精确,为什么它正在改变世界? Python 的协程模型和 JavaScript 的 async/await python闭包和function.__closure__特殊属性 基于nodejs设计REST API的知名开源框架 windows上使用node-oracledb Thick 模式连接 Oracle 11g Claude Code CLI连接 DeepSeek V4模型后调用报400错误 python里对象(object)到底是什么 Python 泛型演变史 Python 类型别名的演变 Python 类型提示的演变史 PEP 593 新增的Annotated 类型 Alibaba AgentScope 和 microsoft agent framework 详细对比分析 spring AI Alibaba Agent Framework 和 agentscope有什么区别和联系 AI Agent协作模式以及主流开源框架对协作模式的支持 Tailscale 是如何接管 DNS 的? Agent = Model + Harness 使用rust编写typescript编译器的难点在什么地方,哪些数据结构是rust不擅长的? TypeScript/JavaScript 中的异步迭代语句 js中的生成器函数 Tailscale Serve and Funnel openclaw gateway的网络绑定模式 websocket协议和http协议有何依赖关系? MCP通信的双方是谁? claude code MCP 安装范围 如何在wsl2环境下给claude code cli 配置 playwright-mcp wsl的网络模式有哪几种,有哪些区别? AI Agent memory是什么? ai agent skills是什么? Go测试生态系统工具与最佳实践深度调研(聚焦认证授权系统) 线性代数中常见矩阵类型的概念关系思维导图 三种主流授权策略
python 的 dunder name和 sunder name
悠哉大斌 · 2026-05-12 · via 博客园 - 悠哉大斌

Python 社区里,对名字中的下划线有一套约定术语:

形式 名称 例子
name 普通名称 value
_name single leading underscore _cache
name_ single trailing underscore class_
__name double leading underscore __value
__name__ dunder name __init__
_name_ sunder name _missing_

其中:

  • __dunder__
  • _sunder_

主要出现在:

  • Python 内部协议
  • 元编程
  • Enum
  • dataclass
  • typing
  • 解释器保留接口

一、什么是 dunder name

dunder =

double underscore

即:

__name__

这种:

  • 前后各两个下划线

  • 又叫:

    • magic method
    • special method

典型例子

__init__
__new__
__call__
__iter__
__len__
__dict__
__class__

二、dunder 的意义

这是:

Python 语言级协议接口

例如:

len(x)

实际上调用:

x.__len__()

运算符也是

a + b

本质:

a.__add__(b)

for循环

for x in obj:

本质:

iter(obj)
→ obj.__iter__()

所以 dunder 本质是:

Python 解释器保留协议名

用于:

  • 运算符重载
  • 对象模型
  • 容器协议
  • 上下文管理
  • async协议
  • descriptor协议
  • 元类协议

等等。


三、dunder 有两个重要特点


1. 是解释器保留空间

你最好不要乱发明:

__myfunc__

因为未来 Python 可能占用。

PEP 明确建议:

用户代码不要随意定义新的 dunder 名字。


2. 由解释器隐式调用

例如:

obj[0]

其实:

obj.__getitem__(0)

所以:

  • dunder 是语言协议入口
  • 不是普通方法

四、什么是 sunder name

sunder =

single underscore

即:

_name_

特点:

  • 前后各一个下划线
  • 中间是名字

五、sunder 是“库内部保留协议”

不像 dunder 属于解释器。

sunder 更多是:

标准库/框架保留命名空间

最典型:

Enum

来自 Python 的 enum 模块。


Enum 大量使用 sunder

例如:

_missing_
_generate_next_value_
_ignore_

六、为什么 Enum 用 sunder 而不用 dunder

因为:

  • dunder 是解释器级别协议
  • Enum 只是标准库

它不能污染 Python 语言层。

因此:

_missing_

表示:

“Enum框架保留接口”

而不是:

“Python解释器协议”


七、一个典型例子:missing

from enum import Enum

class Color(Enum):
    RED = 1

    @classmethod
    def _missing_(cls, value):
        return cls.RED

现在:

Color(999)

不会报错,而会:

Color.RED

因为:

EnumMeta

内部会调用:

_missing_

八、dunder vs sunder 本质区别

对比 dunder sunder
形式 __x__ _x_
含义 解释器协议 库协议
谁调用 Python VM 框架/库
是否语言级 🚫
是否官方保留 强保留 弱保留
用户能否发明 不建议 更不建议冲突