2. 内置常量
内置命名空间中的少量常量:语言核心里的 True/False/None 等与 site 注入的 quit/help 等区分。
除函数与类型外,解释器还在内置命名空间里放了一小撮常量与单例对象。
1 语言内置常量
下列对象在内置命名空间中。其中 True、False、None、__debug__ 作为赋值目标会 SyntaxError(官方表述为无法重新赋值的「真常量」)。NotImplemented 与 Ellipsis 同样是内置单例,业务代码不要用同名变量遮蔽,以免运算符协议、切片等语义错乱。
| 常量 | 作用与要点 |
|---|---|
False | bool 的假值单例。 |
True | bool 的真值单例。 |
None | NoneType 的唯一实例;表示「没有值」或缺省(未显式传入的可选参数、函数无 return 时的结果等)。不要与 NotImplemented、NotImplementedError 混用。 |
NotImplemented | types.NotImplementedType 的唯一实例。应由双目/原地运算符特殊方法(如 __eq__、__add__、__imul__)在「本类型不对该运算实现、请解释器尝试对方类型的反射/回退」时返回;不要在布尔上下文中依赖其真假(3.9+ 已弃用,未来可能 TypeError)。与 NotImplementedError 异常不是一回事。 |
Ellipsis | 与字面量 ... 同一对象,类型为 types.EllipsisType;多用于占位、类型注解或第三方容器/NumPy 的扩展切片约定。 |
__debug__ | 未使用 -O / -OO 启动时为真;与 assert 是否被剥离相关(优化级别下断言可整块去掉)。 |
2 由 site 模块添加的名字
解释器启动时会自动导入 site(除非使用 -S 跳过 site)。下列对象会被挂进内置命名空间,主要给交互式 REPL 用;正式程序不要依赖它们存在(在无 site、嵌入式或精简环境里可能根本没有)。
| 名字 | 作用与要点 |
|---|---|
quit(code=None) / exit(code=None) | 打印退出提示;被调用时抛出 SystemExit(可带退出码)。 |
help | 打印「用 help()…」类提示;被调用时行为同内置函数 help()(见 内置函数)。 |
copyright / credits | 打印或调用时输出版权/致谢文本。 |
license | 打印提示;调用后分页展示许可证全文。 |
| 实践建议 | 内容 |
|---|---|
| 脚本 / 库代码 | 需要退出用 raise SystemExit(code) 或 sys.exit;需要文档用 help() 或 pydoc,不要假定 quit 在全局里。 |
| 排查「为什么 REPL 里有 quit」 | 正常,来自 site;加 python -S 可对比无注入环境。 |
资料:内置常量