前端 Python 3.12

2. 内置常量

内置命名空间中的少量常量:语言核心里的 True/False/None 等与 site 注入的 quit/help 等区分。

除函数与类型外,解释器还在内置命名空间里放了一小撮常量与单例对象。

1 语言内置常量

下列对象在内置命名空间中。其中 TrueFalseNone__debug__ 作为赋值目标SyntaxError(官方表述为无法重新赋值的「真常量」)。NotImplementedEllipsis 同样是内置单例,业务代码不要用同名变量遮蔽,以免运算符协议、切片等语义错乱。

常量作用与要点
Falsebool 的假值单例。
Truebool 的真值单例。
NoneNoneType 的唯一实例;表示「没有值」或缺省(未显式传入的可选参数、函数无 return 时的结果等)。不要NotImplementedNotImplementedError 混用。
NotImplementedtypes.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 可对比无注入环境。

资料:内置常量

On this page