KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
04 · 常用命令,以及什么时候别用它 — keel 龙骨
## 现场:用得最多的其实只有那么几条
现场:用得最多的其实只有那么几条
到这一步,你已经能跑自己的代码、也能跑别人的。真正会拦住你的,剩下两件事:
一是**「这个动作该敲什么」——每次都要回去翻刚才那一章;
二是「我是不是应该用它」**——AI 时代这个问题反而更常见:手上有个活儿,用 Python 还是不用?
这一章把这两件事一次给完:一张能带走的速查表,加一个「什么时候别用它」的判断。
一、一张能带走的速查表
python 后面接不同的东西,做的是完全不同的事——这是最容易记混的一处:
| 你想干什么 | 敲什么 | 说明 |
|---|---|---|
| 看装的是哪个版本 | python --version |
输出形如 Python 3.13.14 |
| 进交互式环境试试看 | python |
出现 >>>;exit() 退出 |
| 跑一个文件 | python hello.py |
没有回显,只出 print 的内容 |
| 临场跑一行,不建文件 | python -c 'print(sum([1,2,3]))' |
直接输出 6 |
| 跑标准库里的现成工具 | python -m json.tool data.json |
把一个 JSON 文件排版成缩进格式 |
| 建一个项目专属环境 | python -m venv .venv |
安静执行,目录里多出 .venv/ |
| 看看装了什么包 | pip list |
只列当前这一份解释器里的包 |
-m 这个写法值得单独记一句:它的意思是「不要跑文件,去跑一个模块」。json.tool、http.server、venv 都是标准库自带的模块,
所以「想临时起一个本地小服务」这种事不用装任何东西。(python -m json.tool 的真实输出:
{
"b": 2,
"a": [
1,
2
]
}
缩进与换行是它加的,不是原文件里就有的。)
二、什么时候别用它
五类场景,都是真会撞上的,不是假想:
| 场景 | 为什么别用 | 该用什么 |
|---|---|---|
| 要跑在浏览器里的东西 | 浏览器不认识 Python,只认 JavaScript | JavaScript / TypeScript |
| 要发给不懂技术的人、双击就用的桌面小工具 | 打包成独立程序是它的弱项,对方还得先装 Python | 交给 Electron / Go 之类的方案 |
| 对启动速度 / 内存极敏感 | 解释器自己就要启动时间与内存,这类场景它起手就欠一截 | 编译型语言 |
| 纯 CPU 密集、又不能装 C 扩展 | 循环里做重计算的纯 Python 很慢(能调库就另说) | 换语言,或换一个有 C/Rust 实现的库 |
| 你的仓库已经全是另一门语言 | 引入第二门语言是净成本:两套工具链、两套依赖管理 | 就用仓库现有那门 |
一条把它们串起来的共同线索:这五类都不是「Python 写不出来」,
而是瓶颈不在「写起来省不省力」,而在「跑在哪、怎么发出去、跟谁接上」。
判断的时候不要问「能不能写」,要问「卡点在哪」——卡点在写法上,Python 划算;
卡点在运行环境或交付形态上,换工具更省事。
三、它不是什么
- 不是「学了它就得什么都用它」。 选语言是选工具。上面那张表反过来用,就是它的适用边界。
- 不是「
python后面接什么都一样」。 一个文件名、一个-m 模块名、一个-c '代码',
是三种不同的入口,敲错哪一个都会报错或跑错东西。 - 不是「速查表要背下来」。 这张表的用途是放在手边查。要带走的是那句判断:
先看卡点在哪,再决定用不用它。
读完你能做什么
- 分清
python 文件/python -m 模块/python -c 代码三种入口,并按需要选用; - 不装任何包,就用标准库里的现成工具处理一件小事(例如把 JSON 排版);
- 拿到一个新任务时,先问「卡点在写法还是卡点在运行环境」,再决定要不要用 Python。
到这里,这门课的四章走完了。 你已经能:确认环境、跑出结果、读懂三类报错、
把别人给的代码在自己机器上跑起来,并判断什么时候不该用它。
想接着往下走,去《Python 工程基础》——
那边不再讲「怎么跑起来」,而是讲「同一段代码为什么有人一眼能看出埋了雷」。