Python 预置常量的奇怪之处:六个内置常量各有各的脾气
来源:sebsite.pw — 2026-08-01
📋 概述
作者梳理了 Python 的六个预声明『常量』——True、False、None、__debug__、Ellipsis 与 NotImplemented,发现它们的行为各不相同。前三个是真正的关键字,在词法阶段就被当作独立 token,因此连 x.True 都会直接抛 SyntaxError;__debug__ 是唯一不能被赋值的标识符;而 Ellipsis 与 NotImplemented 其实只是普通的 builtin,可以被全局变量遮蔽。
🔑 核心要点
- True、False、None 是关键字而非标识符,在词法层就被解析。
- __debug__ 是唯一不能赋值、不能删除的普通标识符(连属性形式也不行)。
- assert (__debug__ := 67) 在调试版抛 SyntaxError,在 -O 下却不报错——SyntaxError 并不总代表语法非法。
- Ellipsis 与 NotImplemented 并非真常量,只是可被遮蔽的普通 builtin。
💡 金句
Python 的常量不是一群整齐划一的士兵,而是六个各自为政的怪脾气。
👍 0
👎 0
← 返回 Lobsters 首页