Python数据类型-内置变量(built-ins)
Python 在启动解释器后,会预先创建一批“全局可见、无须导入即可使用”的 内置变量(built-ins)。
它们分为两类:
- 内置常量(值固定,直接拿来用)
- 内置特殊变量(解释器在特定时机自动注入或约定用途的变量)
一、内置常量(Built-in Constants)
| 变量 | 语法/取值 | 作用与说明 | 示例 |
|---|---|---|---|
None | None | 单例空值;函数无显式 return 时默认返回值;也常用于默认参数占位符 | x = None if not data else data |
True / False | True / False | bool 类型的两个实例 | flag = 3 < 5 → True |
Ellipsis | ... (或 Ellipsis) | 单例,切片占位、类型提示、NumPy 中表“省略” | def func(): ... 或 Array[..., int] |
NotImplemented | NotImplemented | 二元运算未实现时返回,触发解释器尝试反向运算 | __add__ 里 return NotImplemented |
__debug__ | __debug__ → True 或 False | 若 Python 以 -O / -OO 启动则为 False;常用于断言开关 | if __debug__: print('debug') |
二、内置特殊变量(解释器自动注入)
1、作用域与模块元数据
| 变量 | 出现位置 | 用途 | 示例 |
|---|---|---|---|
__name__ | 任何 .py 文件 | 当前模块名;直接执行时为 '__main__' | if __name__ == '__main__': main() |
__file__ | 模块文件 | 当前模块的绝对/相对路径 | Path(__file__).parent |
__package__ | 模块 | 所在包的点分名;顶层脚本为 None | 用于相对导入 |
__path__ | 包(__init__.py) | 列表,存放包目录路径;命名空间包也可写 | __path__.append('extra') |
__spec__ | 模块 | 当前模块的 ModuleSpec(PEP 451) | __spec__.origin |
__loader__ | 模块 | 加载器对象 | 自定义导入逻辑时用到 |
2、类与实例
| 变量 | 出现位置 | 用途 | 示例 |
|---|---|---|---|
__class__ | 实例方法内部 | 指向实例所属类 | super().__init__() 等效于 super(__class__, self) |
__dict__ | 模块 / 类 / 实例 | 存放命名空间的可写 dict | obj.__dict__['x'] = 1 |
__slots__ | 类体 | 限制实例属性,省内存 | class P: __slots__ = ('x', 'y') |
3、函数与代码对象
| 变量 | 出现位置 | 用途 | 示例 |
|---|---|---|---|
__doc__ | 模块 / 类 / 函数 / 方法 | 文档字符串(docstring) | print(func.__doc__) |
__annotations__ | 函数 / 类 | 类型注解字典 | def f(x: int) -> str: ... → f.__annotations__ |
__defaults__ | 函数 | 默认参数元组 | f.__defaults__ |
__code__ | 函数 | 代码对象 | f.__code__.co_filename |
__globals__ | 函数 | 定义时所在全局命名空间 dict | f.__globals__['sys'] |
4、执行环境
| 变量 | 出现位置 | 用途 | 示例 |
|---|---|---|---|
__builtins__ | 任何作用域 | 指向内置命名空间(dict 或 module) | __builtins__.len |
__import__ | 任何地方 | 内置导入函数,可被重写做钩子 | __import__('os.path') |
三、交互式解释器专用变量
| 变量 | 出现位置 | 作用 | 示例 |
|---|---|---|---|
_ | REPL | 上一次表达式的结果 | >>> 3+4 → 7;再输入 _ → 7 |