第一章 Python入门导学
导学
核心知识点
Python 的热度与历史
- Python 并非近几年才诞生的「新语言」,其起源可追溯到上世纪 90 年代初,历史积淀深厚。
- 近年来 Python 因大数据与人工智能的兴起才再次成为主流编程语言,被视作真正进入工业级应用。
- 国内代表性 Python 产品案例:豆瓣、知乎。
Python 在编程语言排行榜中的位置
- 截止课程录制时点,Python 在 TIOBE 排行榜上长期位居第 4 位,仅次于 Java、C、C++。
- Python 的排名上升速度非常快(注意:此节为 2017 年数据,时效已变化,实际排名以最新为准)。
本课程的内容安排
- 主版本:Python 3.6(录制时点),后续版本为 3.8。
- 重点 1:Python 基础语法,从变量、运算到函数式编程与高阶函数。
- 重点 2:面向对象编程,不仅讲语法本身,更讲面向对象的思想。
- 重点 3:Python 常见误区讲解,破除习以为常的认知错误。
- 重点 4:Pythonic 语法,写出高性能、Python 风格的代码。
- 重点 5:实战项目——从零实现一个爬虫(不借助第三方框架,只用基础语法)。
课程学习态度
- 「了解语法是编程的兴趣条件,但精通语法是编程的必要条件」。
- 基础不牢会导致编程过程出现「瓶颈」,影响效率与代码质量。
- 课程主旨可以概括为三句话:
- 细致与境界
- 回归语言本质、打好基础
- Python 的语言境界
Python 的核心特点(首印象)
简洁:能用更少的代码表达同样的逻辑,例如交换两个变量:
python# 其他语言通常需要三行 # tmp = x; x = y; y = tmp # Python 仅需一行 x, y = y, x易学:相对其他语言简化了大量概念,适合作为入门或第二语言。
应用广泛:像「空气」一样无孔不入,能解决大大小小的问题。
Python的特性
核心知识点
第一特性:Python 是众多编程语言中的一种
- Python 并不是唯一的高级语言,市场上还有 Java、C#、PHP、JavaScript、Ruby、Rust 等众多选择。
- 关键区分:Python 是「语言」,不是「框架」。语言是基础,框架是基于语言构建的工具集。
- 开发应用必须选择一门语言,但不一定必须使用框架;选好语言后再叠加框架可大幅提升效率。
第二特性:语法简洁优雅,程序易读
- Python 社区流传着一句经典名言:「Life is short, you need Python.(人生苦短,我用 Python)」。
- 这种「简洁优雅」是大量练习和阅读后才能体会到的,需要在写代码的过程中亲身感受。
第三特性:跨平台
- Python 可运行于 Windows、Linux、macOS 等主流操作系统上。
- 现在绝大多数主流语言都已开源、跨平台,这一点 Python 表现稳定。
第四特性:相对容易学习
- 编程学习者大致可分两类:
- 专业开发者:把编程当职业,目标是找工作。
- 非专业人群:把编程当工具,用来解决日常问题(如金融、统计与分析领域)。
- 对第二类人群来说,Python 比 C/C++/Java 更易上手。
- 编程学习者大致可分两类:
第五特性:丰富的标准库与第三方库
- 例:写邮件发送程序 → 用标准库即可完成。
- 例:开发可视化桌面应用 → 可选用 Python 的 GUI 库(如 Tkinter、PyQt)。
第六特性(最重要):同时支持面向过程与面向对象
- 面向对象是一种思想,可以用任何语言实现;但 Python 从设计之初就把面向对象作为一等公民。
- 对比:Java 从设计之初就考虑了面向对象,使用非常自然;而很多动态脚本语言(如早期 JavaScript)实现面向对象比较别扭。
- Python 的难能可贵之处:既支持面向对象编程,又对函数式编程提供了良好的语法特性,二者并不冲突。
我为什么喜欢Python
核心知识点
第一点:Python 简洁优雅的代码风格
- Python 的代码风格独特、优雅,「比较小众」。
- 国内代表性案例:
- 豆瓣:产品整体风格与 Python 的气质高度一致。
- 知乎:早期使用 Python 构建,社区风格也偏 Python 式。
- 同样实现一个功能,不同语言写出的代码风格迥异,而 Python 体现的是「灵活、不拘一格」的美。
第二点:Python 之禅(The Zen of Python)
- 通过
import this即可在 Python 解释器中查看完整的 Python 之禅。 - 这是 Python 的开发者留下的「写代码的指导思想」,类似编码规范,但比常规规范更抽象、更哲学。
- 经典两条:
- Simple is better than complex.(简洁胜于复杂)
- Now is better than never. Although never is often better than right now.(做也许好过不做,但不假思索就动手还不如不做)
- 「做也许好过不做」提示我们:写代码之前先思考方案,比边写边改效率更高,尤其对于复杂问题。
- 通过
第三点:易学性(相对概念)
- Python 容易上手,但要写出「优质代码」依然有难度。
- 类比玩游戏:Python 入门像休闲游戏,很快能上手;但要做到精通仍需大量练习。
第四点:动态脚本特性 + 面向对象能力
- 程序设计语言粗略可分两类:
- 编译型语言(如 C/C++):编译为机器码,运行效率高,但开发效率较低。
- 动态解释型语言(如 JavaScript、Python):无需声明类型,简单灵活。
- JavaScript 是动态脚本语言,但面向对象支持在 ES6 之前并不自然。
- Python 的独特价值:从语言设计开始就同时支持动态脚本特性 + 面向对象能力,二者兼顾。
- 程序设计语言粗略可分两类:
Python的缺点
核心知识点
Python 最主要的缺点:运行速度相对较慢
- 比较对象是 C/C++/Java,在三者之中 Python 的总体运行效率偏低。
- 但慢是相对的,并非慢到难以忍受。
编译型 vs 解释型 vs 中间代码型
- 编译型语言(如 C/C++):先编译为机器码,再执行。机器码非常接近底层硬件,所以运行效率高。
- 解释型语言(如 Python、JavaScript):每次执行都由解释器逐行解释运行,没有预编译过程,所以效率较低。
- 中间代码型语言(如 Java、C#):执行前会编译成中间代码(如 Java 字节码、.NET 的 IL),再由虚拟机解释执行。Java 和 C# 严格归类到编译型或解释型都不太合适。
- 现代语言已不再严格区分编译型/解释型,分类方式并不绝对。
运行效率 vs 开发效率:鱼与熊掌不可兼得
- C/C++ 接近底层 → 运行效率高 → 但需要处理很多底层 API → 开发效率低。
- Python 属于高级语言 → 不关心底层调用 → 开发效率高。
- 选择语言的判断标准:
- 对性能要求极高(如操作系统、游戏引擎)→ 选 C/C++。
- 对性能要求一般 → 更应关注开发效率 → 选 Python 等高级语言。
- 硬件性能越来越强,「人的时间远比机器宝贵」,这是开发效率越来越被重视的原因。
真正决定程序快慢的,不是语言,而是程序员
- 同样的语言,不同人写出的代码性能差异巨大。
- C/C++ 的代码如果写得差,可能比 Python 还慢。
- 类比:国家基础设施好不代表每个人都能跑得比别人快,基础设施好但个人能力不行,依然不行。
一个经典误区
核心知识点
经典误区:编程 = 网站/APP 开发
- 很多人潜意识里把编程等同于前端开发或 APP 开发,这是非常常见的误区。
- 实际原因:互联网公司、传统软件公司提供的职位大多与前端相关,造成这种认知偏差。
- 但编程绝不等同于前端编程,世界上的编程应用远不止做网站。
为什么 Python 学习者尤其需要避免这个误区
- 对学 Java / C# 的同学来说,这个误区影响不大,因为这些语言确实主要应用于前端。
- 对 Python 学习者而言,Python 的应用场景极其广泛,绝不能只把它当成「做网站」的工具。
重新理解「前端」的概念
- 在当前时代,前端已经是一项「基础能力」而非可选技能。
- 任何有网络的地方都需要前端技术支持(前后端分离、数据接口服务、数据分析展示等)。
- 即使是从事算法、数据分析、运维等工作,深入下去都会用到前端知识。
前端编程是最佳的语言学习实践方向
- 只学习语法而不实践,很难真正掌握一门语言。
- 前端编程需要:
- 很强的业务逻辑思考能力;
- 较宽的知识面(涉及的问题多且广)。
- 建议:不管最终打算用 Python 做什么,都应该了解和学习前端编程。
Python能做些什么
核心知识点
Python 的整体定位:几乎是「万能的」胶水语言
- Python 几乎可以胜任任何你想做的编程任务。
- 注意:「万能」是相对其他语言而言的,Python 在每个领域都谈不上绝对最强,但综合覆盖面最广。
Python 的六大主流应用方向
爬虫
- 互联网时代数据为王,爬虫是数据获取的核心手段。
- 代表性产品:搜索引擎(百度、Google)、新闻聚合(今日头条)。
大数据 / 数据分析
- 大数据处理生态中 Python 是重要一环。
- 与爬虫配合,可完成端到端的数据流水线。
自动化运维 / 自动化测试
- 体现 Python「工具属性」最典型的方向。
- 示例场景:监控多个服务节点、自动告警、自动切换故障节点。
Web 开发
- 主流框架:Django、Flask(课程主讲这两个,但 Python 的 Web 框架远不止这些)。
- 一般不必把所有框架都学一遍,选定一个深入即可。
机器学习 / 人工智能
- 对非专业但有兴趣的入门者,Python 是最佳的入门语言。
- 代表案例:Google TensorFlow 深度学习框架首选 Python,且 Python 是 Google 主推的开发语言。
胶水语言(Glue Language)
- Python 可以轻松集成其他语言编写的现有组件(封装、胶水)。
- 在系统升级或遗留系统对接时非常有用:不必重写老代码,用 Python 直接调用即可。
面对 Python 的正确姿态
- 不要把 Python 当作「专业程序员的专属工具」。
- 正确打开方式:遇到问题时随手拿起 Python,写个小工具解决问题。
- Python 的价值在于「赋能各行各业」,而非仅限于软件开发。
课程内容与特点
核心知识点
课程三大特点
强调 Python 基础语法
- 基础语法不是「看看资料就会」那么简单。
- 看似简单的语法背后隐藏着大量国内资料未深入讲解的细节(如深浅拷贝、可变与不可变对象等)。
- 编程遇到瓶颈时,最常见的原因之一就是基础语法不扎实。
- 写同样一个功能,懂基础的人可能 1 小时搞定,不懂的可能 10 小时还做不完。
重点讲解「Pythonic」代码风格
通过对比示例展示 Python 的简洁优雅:
python# C 语言风格:交换两个变量需要三行 + 一个临时变量 # tmp = a; a = b; b = tmp # Pythonic:一行搞定 a, b = b, a「Pythonic」远不止这一种写法,课程中还会介绍更多典型 Python 风格写法。
学习一门语言,不应只满足于「能跑」,更应追求高性能 + 易读 + Python 风格。
引入数据结构知识
- 数据结构是扎实编程能力的基础,跨语言通用。
- 数据结构本身与具体语言无关,可以用 Python、Java、C++ 任一种实现。
- 课程会演示如何用 Python 实现常见数据结构(如栈、队列、链表、树等)。
对学习者的核心建议
- 当代开发者面临技术海洋:语言、框架、平台层出不穷。
- 很多开发者疲于在不同语言间来回奔波,结果每种语言都「略懂但不精」。
- 课程的期望:回归语言本质,把基础打扎实,享受语言本身的乐趣。
- 当你把一门语言学精通后,再学其他语言会发现共通点,效率大幅提升。
Python的前景
核心知识点
关于编程语言前景的主观性
- 任何人对「语言前景」的评价主观性都很强:你喜欢哪个语言,就会觉得它前景好。
- 本节观点仅供参考,不作为绝对判断。
TIOBE 指数的意义
- TIOBE 只能反映某种语言当下的热度,不能完全真实反映市场价值。
- 课程录制时数据(2017 年):
- Java:约 12%(第一名)。
- C、C++:紧随其后。
- C#:第 4。
- Python:第 5,且近一年整体份额明显提升,从原来的 8~9 名稳步上升。
- 注:以上数据已严重过时,实际最新排名以官方 TIOBE 榜单为准。
Python 升温的两大原因
应用场景拓展
- 早期 Python 多用于爬虫和小工具,少量用于 Web。
- 数据时代来临后,Python 在大数据、人工智能方向的占比大幅上升。
现代项目对性能要求普遍降低
- 不是所有项目都需要极致的运行性能。
- 一旦性能要求不高,开发效率就成了更重要的指标。
- Python 在开发效率上有明显优势,所以越来越多项目愿意选择 Python。
对未来的判断
- Python 的应用领域会越来越广,不只局限于爬虫和 Web。
- 大数据、人工智能的持续发展会让 Python 持续受益。
- 关于「该选哪门语言」的问题没有标准答案,作者给出的个人答案是:Python。
1-9 课程维护与提问
核心知识点
课程代码会长期维护
- 作者此前的小城等课程已维护一年以上,仍在持续更新。
- 即使课程发布已久,相关代码与知识也会不断修订。
遇到问题时的正确做法
- 建议先自己动手调试,而不是直接提问。
- 课程内容经过精心准备,几乎没有明显错误。
- 编程能力的本质就是自我解决问题的能力,只有自己调通才能获得真正的成就感。
- 实在想不通时,可以暂时跳过或直接到课程提问区提问,作者会尽快答复。
课程持续优化
- 好代码都是不断维护、重构、优化出来的。
- 即使原代码没问题,作者可能想到更好的写法,会对课程做相应升级。
- 课程的更新与代码重构都会记录在作者微信公众号「翎言有风」中,建议关注以便获取最新动态。
本章知识要点回顾
| 模块 | 核心概念 | 一句话总结 |
|---|---|---|
| 导学 | 课程定位、Python 历史与热度、TIOBE 排名 | Python 热度持续上升,本课程聚焦基础语法、面向对象、Pythonic、误区讲解与爬虫实战 |
| 特性 | 语言 vs 框架、简洁优雅、跨平台、易学、库丰富、面向对象 | Python 是「胶水型」高级语言,简洁优雅且生态丰富,从设计之初就支持面向对象 |
| 我为什么喜欢 | Pythonic 风格、Python 之禅、动态+面向对象 | Python 之禅「简洁胜于复杂」,Python 同时具备动态脚本特性与面向对象能力 |
| 缺点 | 运行慢、解释型 vs 编译型、运行效率 vs 开发效率 | 慢是相对的;现代项目更看重开发效率,而程序员水平才是性能的决定因素 |
| 经典误区 | 编程 ≠ 前端编程、前端是基础能力 | Python 应用场景极广,绝不能只把它当成「做网站的工具」 |
| 能做些什么 | 爬虫、大数据、自动化运维/测试、Web、机器学习、胶水语言 | Python 几乎是「万能的胶水语言」,正确打开方式是「随手写工具解决问题」 |
| 课程特点 | 基础语法、Pythonic、数据结构 | 课程强调回归语言本质,把基础打扎实,享受语言本身的乐趣 |
| 前景 | TIOBE 趋势、应用拓展、开发效率优势 | Python 排名稳步上升,应用领域越来越广,未来前景看好(个人推荐学 Python) |
全章核心结论
- Python 是什么:一门解释型、动态、强类型(Python 3 中)、多范式(面向对象 + 函数式 + 过程式)的高级编程语言。
- 为什么学 Python:简洁优雅、应用广泛、开发效率高、生态成熟、对新手友好。
- Python 的代价:运行速度相对较慢(但大多数项目不在乎)。
- Python 适合谁:从专业开发者到普通办公人员,几乎所有用电脑的人都能受益。
- 课程如何学习:重视基础语法、理解 Pythonic 风格、动手实践(爬虫实战)、持续迭代。
- 正确打开 Python 的方式:遇到问题 → 随手拿起 Python → 写个小工具解决。