编程语言研究书库

Python 是什么、在哪儿写代码 — 入门第一章

Python 是什么、在哪儿写代码 — 入门第一章

这一章讲四件事: Python 是一门什么样的语言;为什么值得学; 你写好的代码应该在哪种环境里运行(这一章做了全书最重要的一个区分); 以及这本书自己的教法。读完你会知道为什么全书所有例子都放在一个叫 Jupyter Notebook 的工具里。

1. 这一章在全书链条里的位置

这本书假设你从来没写过任何程序。所以它不从语法讲起,而是先解决动手之前的一切犹豫: 这语言是什么来历?写完的代码给谁执行?代码写在哪个软件里?本机装还是上网用?

这一章的答案会决定后面十五章的默认场景:所有示范都在 Jupyter Notebook 的一个个 「格子」里运行,你看到的每一段输出,都是在一个格子里跑出来的。

2. 顶层全景:四个问题,一张图

  问题一:Python 是什么?  →  一门 1991 年诞生的高级语言,名字叫 Python 但不是蟒蛇
  问题二:为什么学它?      →  关键字少、好读、什么都能干、免费、用的人多
  问题三:代码在哪跑?      →  两种姿势:脚本式(整份文件跑) / 交互式(一行一行跑)
  问题四:写在哪个软件里?  →  Jupyter Notebook(交互式的代表),本地装或云端用

  图说:这一章就是逐题回答这四个问题。问题三的分叉是后面所有章的默认环境。

3. Python 是什么:一门「说给人听」的高级语言

原书给 Python 下的定义很短:

Python is a high-level, interpreted programming language that's known for being easy to learn and use1。

逐个拆开这三个定语:

  • 高级语言(high-level language):指它离人的表达近、离机器的细节远。 相对的是低级语言——那种要直接管内存地址、管寄存器的写法,人读着要掉头发。 高级语言把机器的脏活藏了起来,你写的是「打印这句话」这种接近日常语言的句子1。
  • 解释型(interpreted):指它的执行方式——你写的代码不是先整体翻译成机器码存下来再跑, 而是由一个现成的程序(解释器)读一行、执行一行1。 这个性质正是第 4 节「交互式」能成立的地基:既然解释器本来就能读一行干一行, 那让它当场干给你看,只是换个用法。
  • 好学好用:书里说它「以好学好用出名,是初学者的热门选择」1。

它的来历(这些是人名和年份,不影响理解,知道即可):

  • 作者是荷兰程序员 Guido van Rossum,1991 年首次发布2。
  • 名字来自英国喜剧团体 Monty Python 的《飞行的马戏团》,不是蟒蛇—— 虽然它的商标就是两条蛇3。
  • 版本线分两代:2.x 和 3.x。2.0 发布于 2000 年,3.0 发布于 2008 年, 修补了 2.x 的一批毛病(比如对 Unicode——一种给全世界所有文字统一编号的方案—— 支持不足)。2.x 现在已停止维护,这本书只讲 3.x4。
  • 书里成书时的最新版是 Python 3.13,发布于 2024 年 10 月 7 日5。 (补充,不在书里:Python 之后仍在按每年一个版本的速度更新,版本号比 3.13 高是正常事, 本书讲的语法全部适用。)

4. 为什么是它:四个理由,但真正的理由是生态

书里列了四个理由6:

理由书里怎么说这一条的分量
简单好读关键字(语言里被保留、有固定含义的那些词)数量少,结构干净,写的人能专注在「逻辑」而不是「语法花样」上入门期的主要红利
什么都能干是一门通用语言(general-purpose language)——网页开发、数据分析、人工智能、机器学习、自动化脚本都能写学了不亏
社区大用的人多,遇到问题时容易找到人帮、找到现成的答案;语言本身也随社区需求持续演进长期价值
跨系统、免费Windows、macOS、Linux 都能跑;而且是开源(open-source)的——源代码公开,任何人可以免费使用、分享、修改零成本起步

判断(我们的,不是书里的): 这四条里,真正让 Python 在数据分析和人工智能领域 碾压对手的,是第三条「社区大」的副产品——现成轮子多。书里自己也承认这一点: 数据分析、网页开发这些活之所以「简单」,是因为有大量库(别人写好的、可以直接 拿来用的代码包)和框架(为某一类任务搭好的半成品骨架)替你把重活干了6。 书里顺手点了四个名字:Django 和 Flask 是网页开发框架(你只需写「这个网址显示什么」, 底层的网络收发它们包了);NumPy 和 pandas 是数据分析库(几百行的表格运算 它们一行搞定)7。「关键字少」只决定入门那一两周顺不顺,「轮子多」决定你接下来 十年顺不顺。 如果错,会错在: 如果某个领域的轮子生态迁去了别的语言(历史上 Ruby、Julia 都挑战过), 这条的权重就会变——但截至目前这个判断与书里的论据一致。

5. 全书最重要的一个区分:脚本式 vs 交互式

原书说,用 Python 时有两种主要姿势,这一步的选择决定了你后面所有的工作方式8:

脚本式(script):把代码写进一个文本文件里存好,然后整份文件交给解释器一次跑完。 写一次、存下来、随时可以再跑。适合「同一套操作要反复做」的活——批处理数据、定时任务、 在后台无人值守地跑。

交互式(interactive):一行一行地执行,每行跑完立刻看到结果。 适合「我自己也还不知道下一步该怎么办」的探索——试着读一份数据,看一眼长什么样, 不行就换种读法再来。数据分析、科学计算几乎都是这么干的8。

打个比方:脚本式像把一封信写好封上投进邮筒,一次寄出全程不回头; 交互式像打电话,你说一句、对方答一句,你根据回答决定下一句说什么。 (这个比方是我们加的,书里用的是「写脚本存下来跑」对「逐行执行看结果」的直接描述8。)

原书进一步说,交互式对数据科学格外合适,理由可以压成一条:探索本身就是 「试一个想法 → 看结果 → 修正 → 再试」的循环,交互式让这个循环短到以秒计, 试错的成本低了,人敢做的尝试就多了9。

6. 这一章选定的工具:Jupyter Notebook

既然交互式是默认姿势,就需要一个交互式的工作环境。原书选了 Jupyter Notebook—— 一个把文字说明、代码、运行结果混排在同一份文档里的工具,也是业界和学界数据科学 事实上的标准环境10。

它的基本单位是格子(cell),一份文档由一串格子组成,格子的类型决定了里面装什么11:

格子类型里面装什么长什么样
Markdown 格给人读的文字(用 Markdown 这套轻量记号排:# 标题、加粗、链接、公式)就是你现在读的这种排版
代码格可执行的代码(Python,也可以是 R、Julia 等)灰底的一个小方框
输出格代码格跑完后的结果:文字、表格、图片紧跟在代码格下面

你一次跑一个格子,点一下运行按钮,这个格子里的代码当场执行,结果就出现在它下面。 这就是「交互式」最具体的样子。

两个细节值得记住:

  • 存盘文件的扩展名是 .ipynb,里面的内容是一种叫 JSON 的结构化文本—— 也就是说这份「文档」本质是数据,可以被程序读写、被网页渲染12。
  • JupyterLab 是操作这些文档的网页界面——你在浏览器里打开它,像开网页一样开文档10。

主线例子:从打开 Jupyter 到第一行输出

这一章没有算题,但全书的所有演示都发生在同一个动作上,值得把这一遍走完整:

  ① 打开 JupyterLab(本地装的,或浏览器里的 Google Colab)
  ② 新建一个 Notebook → 得到一个叫 Untitled.ipynb 的空文档
  ③ 页面里出现一个空的代码格,光标在里面闪
  ④ 在格子里键入:print("Hello, World!")
  ⑤ 按运行(或 Shift+回车)→ 格子下面多出一个输出格,写着 Hello, World!
  ⑥ 光标自动跳到下一个新格子,等你写下一句

  图说:全书几百个演示都是这六步的重复。代码格里的引号、括号的具体规则,第 2 章讲。

(这里的 print("Hello, World!") 是第 2 章的正式内容,这一章只要求你知道 「在格子里写、点运行、看输出」这个循环10。)

7. 本地装还是云端用:两条路

原书说,要用 Jupyter 只有两条路,选哪条取决于你愿意付出什么13:

本地安装(Anaconda 本地包)云端服务(Google Colab、Anaconda Online)
怎么得到下载一个叫 Anaconda 的软件包装到自己电脑上打开网页即用,不装任何东西
好处完全掌控环境,可以离线用,机器的性能全归你零安装、零维护,任何一台能上网的电脑都能用,自带协作与分享
代价要自己装、自己维护,吃本机配置依赖网络和对方的免费额度

书里点了两个具体名字:Google Colab(谷歌的免费云端 Notebook, 连 TensorFlow、PyTorch 这些人工智能库都预装好了)和 Anaconda (一个把 Python、Jupyter 和一堆数据科学工具打包在一起的发行版,本地云端都有)13。

判断(我们的,不是书里的): 对零基础读者,先用云端(Google Colab) 「当天打开浏览器当天写出第一行代码」的价值,远大于任何性能和控制权上的损失。 环境搭建是新人夭折率最高的一个环节,绕开它比什么优化都重要。 如果错,会错在: 如果你已经有稳定的本地环境、或要处理不能上云的数据,那本地 路线自然是对的——但这条判断针对的是「还没开始」的人,不是已经在跑的人。

8. Jupyter 还有哪些本事(用到再回来看)

这一节把原书对 Jupyter 的能力罗列补全,都是一句话级别,不需要现在记住14:

  • 不挑语言:代码格里除了 Python,还能写 R、Julia 等语言,在浏览器里或远程服务器(搁在机房、替你跑程序的电脑)上执行15。
  • 媒体通吃:图片、视频、交互式图表、公式都能嵌进同一份文档——数据分析里那些 「鼠标放上去会动的图」就是这么做出来的15。
  • 协作与分享:可以把 notebook 发给别人,多人在同一份文档上实时一起改, 文档里自带批注和讨论功能16。
  • 安全与扩展:能给 notebook 设密码或令牌(一串当作通行证的随机字符), 也能部署到云端服务器上去扛大流量16。
  • 为什么这样设计:书里点了一句本质——把「解释的文字、跑的代码、跑出来的结果」 焊在同一份文档里,你几个月后回头重读,每一步「为什么这么写」都还在原地; 反过来,一段孤零零的脚本文件过三个月连自己都看不懂11。 数据分析的结论是「试出来的」,不是「想出来的」——把试错过程留在纸面上, 正是这个行业对「可复现」的执念。

9. 这本书教你怎么学:四条建议,按重要度排

原书第 1.7 节给了四条学习建议17。它说得平淡,但每一条都对应一种真实的新人死法, 我们按「不照做会怎么死」来排:

书里的话不照做会发生什么
练——从简单程序写起,渐渐写到案例、项目只看不动手的人会在第 7 章「分支」集体掉队:看得懂每一行,合上书一个 if 都写不出来
懂逻辑,不死背语法——语法的背后是规则背语法的人遇到报错就抓瞎,因为报错是规则在说话,不是单词在说话
联系现实——想它怎么解决你身边的问题纯做书后习题的人学完不知道 Python 能干嘛,动力断崖
用生成式 AI 当助教——要它出讲解、出练习、给你的代码挑毛病不用也不亏,这是加速器不是必需品;但反过来,让它替你写你本该练手的代码,这本书就白买了

判断(我们的,不是书里的): 这四条里「练」和「懂逻辑」是一件事的两面—— 练习之所以有效,是因为每次卡住都是一次「规则在哪跟我预期不一样」的对表。 书里把 AI 辅助写进学习方法,是有立场的一步:它默认「和 AI 结对」是这一代初学者的 新常态18。这不等于作业可以外包——书的前言特意说「Generative AI as a tool is great, but only we should use it wisely」19。 如果错,会错在: 如果 AI 生成练习的质量差到把错误概念灌进新手脑子 (书里承认部分练习由 AI 生成、经人工审校18),「用 AI 练」还不如「不用」—— 这个风险书里没有量化讨论。

10. 作者的判断与证据

这一章是介绍性的,作者的判断集中在「怎么学」上:

  • 作者明确声明全书采用 「体验式学习 + BiteSize(小口吃)策略」: 把硬主题拆成一小块一小块,每块配示范、配练习,强调动手20。 这个「每课 5 分钟以内」的拆法写在前言里,是这本书的组织方式, 而不是一个可以被证伪(拿得出证据说它是错的)的技术主张21。
  • 作者还做了一个有时代印记的判断:「善用生成式 AI 来增强学习」—— 用 AI 工具生成解释、出练习题、给代码挑毛病,甚至这本书里的一部分练习题 本身就是 AI 生成的18。这是 2024–2025 年新一代入门书才有的姿态, 老一代教材会视查资料都为作弊。
  • 关于 Python 本身的说法(好读、通用、社区大)都是业界共识性描述, 书里没给数据,我们也没法替它给——它们正确,但不是被论证出来的6。

11. 边界与局限

  • 「最新版 3.13」会过期。 书里写「最新版 Python 3.13 发布于 2024 年 10 月 7 日」5, 这是成书时间的快照;Python 每年 10 月发一个新版本,你现在看到比 3.13 高的版本号 不代表书过时——本书教的语法从 3.0 时代起基本没变过。
  • 没有说清 Jupyter 之外的世界。 职业开发者日常更多用的是 IDE (集成开发环境,一个把写代码、跑代码、调试打包在一起的软件,比如 PyCharm 或 VS Code)。 这本书完全不提,因为它的目标场景是数据科学和交互式探索——这是取舍,不是遗漏。
  • 「5 分钟一课」是营销口径。 前言说每课不到 5 分钟21,实际连示范带练习, 一个概念花半小时很正常。别拿 5 分钟当真预算,拿它当「这一口很小,别怕」的心理暗示。
  • 书里有一处小笔误。 第 1 章开头说 Python 能教你「sophisticated neutrons are built and connected」,从上下文看作者想写的是 neural networks(神经网络), 却写成了「中子」22。读原书时撞见别当真。
  • 版本号怎么读值得花十秒。 「Python 3.13」里的 3 是大版本(3.x 这一代), 13 是这一代的第 13 个小版本;每年 10 月左右出一个。所以「3.13 发布于 2024 年 10 月 7 日」 意味着这本书踩在 Python 年度发布节奏刚出新车的时间点上5。

12. 可带走的

  1. Python = 高级 + 解释型 + 通用;1991 年由 Guido van Rossum 发布;名字来自喜剧团体,不是蛇23。
  2. 只学 3.x,2.x 已死4;书里成书时的最新版是 3.13(2024-10-07),版本号只会更高,语法照学不误5。
  3. 脚本式 = 整份文件跑,适合重复性任务;交互式 = 逐行跑、即时看结果,适合探索8。
  4. 数据分析的工作方式是「试 → 看 → 改」的短循环,交互式把这个循环压到以秒计9。
  5. Jupyter Notebook 把说明文字、代码、输出混排在一份 .ipynb 文档里,按格子运行1112。
  6. 环境两条路:本地 Anaconda(掌控但麻烦)vs 云端 Google Colab(零安装);新手先云端13。
  7. 这本书的固定节奏:介绍 → 示范 → 练习 → 跟 AI 互动 → 案例,每个概念的包装都是这五件套20。
  8. 用 AI 当助教是这本书的默认配置:前言甚至给了一段开场提示词,让 AI 扮演「Python 专家 tutor」18。
  9. JupyterLab 和 Jupyter Notebook 别混:前者是后者的一套网页操作界面—— 你打开 JupyterLab,在里面新建和运行一个个 Notebook 文档10。 所以别人说「我在 Jupyter 里跑的」,指的通常就是这一套界面加文档的组合。

13. 原文地图

主题原书章原文位置
Python 的定义与来历CHAPTER 1: Introduction to Pythontext/10-ch01-chapter-1-introduction-to-python.txt:16(搜「high-level, interpreted」) · text/10-ch01-chapter-1-introduction-to-python.txt:17(搜「created by Guido」)
名字来自 Monty Python同上text/10-ch01-chapter-1-introduction-to-python.txt:19(搜「Monty Python」)
2.x 与 3.x、最新版 3.13同上text/10-ch01-chapter-1-introduction-to-python.txt:22(搜「Python 2.0」) · text/10-ch01-chapter-1-introduction-to-python.txt:28(搜「Python 3.13」)
为什么流行的四个理由同上text/10-ch01-chapter-1-introduction-to-python.txt:36(搜「ease of use, versatility」)
脚本式 vs 交互式同上text/10-ch01-chapter-1-introduction-to-python.txt:59(搜「two main options」)
交互式为什么适合数据科学同上text/10-ch01-chapter-1-introduction-to-python.txt:80(搜「particularly well-suited」)
Jupyter Notebook 与三种格子同上text/10-ch01-chapter-1-introduction-to-python.txt:104(搜「JupyterLab and Jupyter Notebooks」) · text/10-ch01-chapter-1-introduction-to-python.txt:134(搜「.ipynb」) · text/10-ch01-chapter-1-introduction-to-python.txt:139(搜「ability to combine markdown」)
本地还是云端同上text/10-ch01-chapter-1-introduction-to-python.txt:59(搜「two main options」) · text/10-ch01-chapter-1-introduction-to-python.txt:181(搜「Google Colab」)
BiteSize 学习法与 AI 辅助同上text/10-ch01-chapter-1-introduction-to-python.txt:198(搜「Bite-Size strategy」) · text/10-ch01-chapter-1-introduction-to-python.txt:216(搜「Generative AI」)
每课 5 分钟、练习用 AI 生成Prefacetext/08-fm-preface.txt:6(搜「5 minutes」) · text/08-fm-preface.txt:51(搜「adopted some of the prompts」)

Footnotes

  1. 出处:「CHAPTER 1: Introduction to Python」第 16 段(text/10-ch01-chapter-1-introduction-to-python.txt:16,搜「high-level, interpreted programming language」)。原文:「Python is a high-level, interpreted programming language that's known for being easy to learn and use, making it a popular choice for beginners.」高级语言与解释型的中文解释是我们补的,原文没有展开。 ↩ ↩2 ↩3 ↩4

  2. 出处:「CHAPTER 1: Introduction to Python」第 17 段(text/10-ch01-chapter-1-introduction-to-python.txt:17,搜「created by Guido」)。原文给出 1991 年首次发布与作者国籍(荷兰程序员);「Guido van Rossum」全名跨了原文两行,检索短语取的是同一行内的片段。 ↩ ↩2

  3. 出处:「CHAPTER 1: Introduction to Python」第 19 段(text/10-ch01-chapter-1-introduction-to-python.txt:19,搜「Monty Python's Flying Circus」)。原文:「The language is named after the British comedy group Monty Python's Flying Circus, not after the snake」。 ↩ ↩2

  4. 出处:「CHAPTER 1: Introduction to Python」第 22–27 段(text/10-ch01-chapter-1-introduction-to-python.txt:22,搜「Python 2.0 came」;:25,搜「no longer supported」;:26,搜「Python 3.0, released in 2008」)。2.x 停止维护、3.0 修补 2.x 的限制,均为原文明写。 ↩ ↩2

  5. 出处:「CHAPTER 1: Introduction to Python」第 28 段(text/10-ch01-chapter-1-introduction-to-python.txt:28,搜「Python 3.13」)。原文:「The latest version, Python 3.13, was released on October 7, 2024.」 ↩ ↩2 ↩3 ↩4

  6. 出处:「CHAPTER 1: Introduction to Python」第 36 段(text/10-ch01-chapter-1-introduction-to-python.txt:36,搜「ease of use, versatility」)与第 38–55 段(text/10-ch01-chapter-1-introduction-to-python.txt:43,搜「general-purpose」;:52,搜「multiple operating systems」)。四个理由的展开在原文第 38–55 段。 ↩ ↩2 ↩3

  7. 出处:「CHAPTER 1: Introduction to Python」第 31–32 段(text/10-ch01-chapter-1-introduction-to-python.txt:32,搜「Django, Flask, NumPy, and pandas」)。四个名字的分工(网页框架 / 数据分析库)是我们的常识性补充。 ↩

  8. 出处:「CHAPTER 1: Introduction to Python」第 59–62 段(text/10-ch01-chapter-1-introduction-to-python.txt:59,搜「two main options for your environment」)。原文:「Script Python involves writing code in a text editor or integrated development environment (IDE) and running it as a script, while interactive Python allows you to execute code line by line」。 ↩ ↩2 ↩3 ↩4

  9. 出处:「CHAPTER 1: Introduction to Python」第 80–82 段(text/10-ch01-chapter-1-introduction-to-python.txt:80,搜「particularly well-suited for data science」)。原文列了六条理由(实时操作与可视化、迭代式建模、统计库、交互图表、快速调试、协作分享),我们压成「试错循环短」一条概括。 ↩ ↩2

  10. 出处:「CHAPTER 1: Introduction to Python」第 104–108 段(text/10-ch01-chapter-1-introduction-to-python.txt:104,搜「JupyterLab and Jupyter Notebooks」;:108,搜「web-based user interface」)。原文:「JupyterLab is a web-based user interface to create and play with Jupyter Notebooks.」 ↩ ↩2 ↩3 ↩4

  11. 出处:「CHAPTER 1: Introduction to Python」第 139–155 段(text/10-ch01-chapter-1-introduction-to-python.txt:139,搜「ability to combine markdown」)。三种格子的说明逐条在原文第 145–155 段。 ↩ ↩2 ↩3

  12. 出处:「CHAPTER 1: Introduction to Python」第 134 段(text/10-ch01-chapter-1-introduction-to-python.txt:134,搜「.ipynb extension」)。原文:「Jupyter Notebook files have a .ipynb extension and contain a JavaScript Object Notation structure」。JSON 的中文名「一种结构化的文本数据格式」是我们补的解释。 ↩ ↩2

  13. 出处:「CHAPTER 1: Introduction to Python」第 164–175 段(text/10-ch01-chapter-1-introduction-to-python.txt:167,搜「local installation or cloud services」)与第 181–194 段(text/10-ch01-chapter-1-introduction-to-python.txt:181,搜「Google Colab is a popular cloud service」)。利弊对照表是我们的整理,事实来自原文。 ↩ ↩2 ↩3

  14. 出处:「CHAPTER 1: Introduction to Python」第 109–142 段(text/10-ch01-chapter-1-introduction-to-python.txt:109,搜「execute code line by line」)。这一整段是原书对 Jupyter 特性的罗列,我们逐条压缩成一句话。 ↩

  15. 出处:「CHAPTER 1: Introduction to Python」第 111–117 段(text/10-ch01-chapter-1-introduction-to-python.txt:112,搜「R, Julia, or other languages」;:113,搜「wide range of media」)。不挑语言与媒体通吃两条见原文。 ↩ ↩2

  16. 出处:「CHAPTER 1: Introduction to Python」第 118–133 段(text/10-ch01-chapter-1-introduction-to-python.txt:118,搜「real-time collaboration」;:129,搜「robust security and scalability」)。协作分享与安全扩展两条见原文;「可复现的执念」是我们的概括,原文说的是「document your methods, results, and conclusions in a clear and transparent way」(第 158 段)。 ↩ ↩2

  17. 出处:「CHAPTER 1: Introduction to Python」第 203–219 段(text/10-ch01-chapter-1-introduction-to-python.txt:203,搜「logic behind the syntax」;:206,搜「Practice is key」;:212,搜「connect the concepts」;:216,搜「Generative AI」)。四条建议逐条对应原文四处。 ↩

  18. 出处:「Preface」第 48–52 段(text/08-fm-preface.txt:48,搜「Generative AI tools like ChatGPT」;:51,搜「adopted some of the prompts」)。「让 AI 扮演 Python 专家 tutor」的开场提示词见原文第 65–68 段。 ↩ ↩2 ↩3 ↩4

  19. 出处:「Preface」第 52 段(text/08-fm-preface.txt:52,搜「use it wisely」)。原文:「Generative AI as a tool is great, but only we should use it wisely.」 ↩

  20. 出处:「CHAPTER 1: Introduction to Python」第 198–202 段(text/10-ch01-chapter-1-introduction-to-python.txt:198,搜「experiential learning pedagogy」)。原文:「We adopt the experiential learning pedagogy and Bite-Size strategy to break a hard topic down into fun pieces.」 ↩ ↩2

  21. 出处:「Preface」第 6 段(text/08-fm-preface.txt:6,搜「less than 5 minutes」)。原文:「Breaks down Python programming into easily digestible lessons of less than 5 minutes each.」 ↩ ↩2

  22. 出处:「CHAPTER 1: Introduction to Python」第 8–12 段(text/10-ch01-chapter-1-introduction-to-python.txt:9,搜「sophisticated neutrons」)。原文写的是「how sophisticated neutrons are built and connected to form the foundation of artificial intelligence」——中子搭不成人工智能的地基,按上下文应为 neural networks(神经网络)之笔误。 ↩

On this page