基础篇 · Foundations
lv.1 入门
kp-001
Python 是什么
1. 一句话定义
Python 是一门解释执行、动态强类型、以可读性为首要设计目标的通用高级编程语言,由 Guido van Rossum 于 1989 年底开始设计,1991 年首次发布。
2. 为什么重要
- 它是数据科学与 AI 时代事实上的"胶水语言"标准(NumPy、PyTorch、pandas 全部以它为入口)。
- 它同时覆盖脚本自动化、Web 后端、测试运维,一门语言可以服务多种职业方向。
- 它的语法接近伪代码,是学习"编程思维"本身阻力最小的语言之一。
3. 前置知识
无。会使用电脑与浏览器即可。
4. 核心概念
- 解释执行:代码不需要先编译成机器码,由解释器逐句执行;开发反馈快,运行慢于编译型语言。
- 动态类型:变量不需要声明类型,类型跟着值走。
- 强类型:类型虽动态但不乱猜——
"1" + 1会报TypeError,而不是悄悄转换(对比 JavaScript 的弱类型)。 - CPython:用 C 写成的参考实现,是"默认的 Python"。此外还有 PyPy(JIT 加速)、MicroPython(嵌入式)等实现,日常说 Python 默认指 CPython。
- 多范式:过程式、面向对象、函数式都支持,不强迫任何一种。
5. 原理与机制
输入的 .py 源码会先被 CPython 编译成字节码(bytecode,可缓存为 __pycache__/*.pyc),再由虚拟机逐条解释执行。可用 dis 模块看到字节码:
python
import dis
def add(a, b):
return a + b
dis.dis(add)这正是 Python"运行慢"的根源:每条字节码都要在解释循环里派发。2023 年起的 CPython 3.13 实验性 JIT 与 PEP 703 去除 GIL,都是针对这一层的演进(见 kp-039)。
6. 关键事实(模型/图示)
text
源码 .py → 编译 → 字节码 .pyc → CPython 虚拟机解释执行
↑ 缓存于 __pycache__/- 版本演进:1991 首版 → 2000 Python 2 → 2008 Python 3(不兼容的大改)→ 2020-01-01 Python 2 停止维护 → 2024/2025 年代主版本为 3.12/3.13。
- 命名灵感来自喜剧团体 Monty Python,不是蟒蛇,但蟒蛇标志已成为文化符号。
7. 直观类比
Python 像一台自动挡汽车:不用管挡位(类型声明)和离合(编译),上手就能开;代价是激烈驾驶(极致性能)时不如手动挡(C/Rust)。CPython 解释器则是那台发动机——你几乎从不打开引擎盖,但知道它在哪有助于诊断问题。
8. 实例与案例
bash
# 最小验证:解释器能跑,一切就绪
python3 -c "print('hello, python')"
python3 --version进入交互式解释器(REPL)后 >>> 提示符下可直接实验,是本知识库推荐的学习主战场。
9. 常见误区
- "Python 不能有类型" —— 强类型不等于静态类型;Python 3.5 起有类型注解(kp-026),只是运行时不强制。
- "学了 Python 语法就等于会 Python" —— 真正的分水岭在对象模型与工程能力(阶段二、三)。
- 把
python2的教程当最新资料 —— 语法(print 语句)与语义(整数除法)均已过时,认准 Python 3 文档。
10. 自测题
"1" + 1在 Python 中会发生什么?说明这体现了哪种类型特征。- CPython、PyPy、MicroPython 的关系是什么?默认说的 Python 指哪个?
- Python 2 何时停止维护?为什么学习资料必须认准 Python 3?
参考答案
- 抛出
TypeError——动态但不弱类型,字符串与整数不隐式转换。 - 都是实现(implementation);CPython 是 C 写的参考实现,是默认与事实标准。
- 2020-01-01。print 语句、
/除法语义、unicode 默认等大量差异,旧教程会教出错误直觉。
11. 与其他知识点的关系
12. 延伸阅读
- Python 官方教程第 1 章:https://docs.python.org/zh-cn/3/tutorial/
- History of Python(官方 Wiki):https://wiki.python.org/moin/HistoryOfPython