Skip to content

第一章 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:实战项目——从零实现一个爬虫(不借助第三方框架,只用基础语法)。
  • 课程学习态度

    • 「了解语法是编程的兴趣条件,但精通语法是编程的必要条件」。
    • 基础不牢会导致编程过程出现「瓶颈」,影响效率与代码质量。
    • 课程主旨可以概括为三句话:
      1. 细致与境界
      2. 回归语言本质、打好基础
      3. 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 的六大主流应用方向

    1. 爬虫

      • 互联网时代数据为王,爬虫是数据获取的核心手段。
      • 代表性产品:搜索引擎(百度、Google)、新闻聚合(今日头条)。
    2. 大数据 / 数据分析

      • 大数据处理生态中 Python 是重要一环。
      • 与爬虫配合,可完成端到端的数据流水线。
    3. 自动化运维 / 自动化测试

      • 体现 Python「工具属性」最典型的方向。
      • 示例场景:监控多个服务节点、自动告警、自动切换故障节点。
    4. Web 开发

      • 主流框架:Django、Flask(课程主讲这两个,但 Python 的 Web 框架远不止这些)。
      • 一般不必把所有框架都学一遍,选定一个深入即可。
    5. 机器学习 / 人工智能

      • 对非专业但有兴趣的入门者,Python 是最佳的入门语言。
      • 代表案例:Google TensorFlow 深度学习框架首选 Python,且 Python 是 Google 主推的开发语言。
    6. 胶水语言(Glue Language)

      • Python 可以轻松集成其他语言编写的现有组件(封装、胶水)。
      • 在系统升级或遗留系统对接时非常有用:不必重写老代码,用 Python 直接调用即可。
  • 面对 Python 的正确姿态

    • 不要把 Python 当作「专业程序员的专属工具」。
    • 正确打开方式:遇到问题时随手拿起 Python,写个小工具解决问题。
    • Python 的价值在于「赋能各行各业」,而非仅限于软件开发。

课程内容与特点

核心知识点

  • 课程三大特点

    1. 强调 Python 基础语法

      • 基础语法不是「看看资料就会」那么简单。
      • 看似简单的语法背后隐藏着大量国内资料未深入讲解的细节(如深浅拷贝、可变与不可变对象等)。
      • 编程遇到瓶颈时,最常见的原因之一就是基础语法不扎实。
      • 写同样一个功能,懂基础的人可能 1 小时搞定,不懂的可能 10 小时还做不完。
    2. 重点讲解「Pythonic」代码风格

      • 通过对比示例展示 Python 的简洁优雅:

        python
        # C 语言风格:交换两个变量需要三行 + 一个临时变量
        # tmp = a; a = b; b = tmp
        
        # Pythonic:一行搞定
        a, b = b, a
      • 「Pythonic」远不止这一种写法,课程中还会介绍更多典型 Python 风格写法。

      • 学习一门语言,不应只满足于「能跑」,更应追求高性能 + 易读 + Python 风格

    3. 引入数据结构知识

      • 数据结构是扎实编程能力的基础,跨语言通用。
      • 数据结构本身与具体语言无关,可以用 Python、Java、C++ 任一种实现。
      • 课程会演示如何用 Python 实现常见数据结构(如栈、队列、链表、树等)。
  • 对学习者的核心建议

    • 当代开发者面临技术海洋:语言、框架、平台层出不穷。
    • 很多开发者疲于在不同语言间来回奔波,结果每种语言都「略懂但不精」。
    • 课程的期望:回归语言本质,把基础打扎实,享受语言本身的乐趣。
    • 当你把一门语言学精通后,再学其他语言会发现共通点,效率大幅提升。

Python的前景

核心知识点

  • 关于编程语言前景的主观性

    • 任何人对「语言前景」的评价主观性都很强:你喜欢哪个语言,就会觉得它前景好。
    • 本节观点仅供参考,不作为绝对判断。
  • TIOBE 指数的意义

    • TIOBE 只能反映某种语言当下的热度,不能完全真实反映市场价值。
    • 课程录制时数据(2017 年):
      • Java:约 12%(第一名)。
      • C、C++:紧随其后。
      • C#:第 4。
      • Python:第 5,且近一年整体份额明显提升,从原来的 8~9 名稳步上升。
    • 注:以上数据已严重过时,实际最新排名以官方 TIOBE 榜单为准
  • Python 升温的两大原因

    1. 应用场景拓展

      • 早期 Python 多用于爬虫和小工具,少量用于 Web。
      • 数据时代来临后,Python 在大数据、人工智能方向的占比大幅上升。
    2. 现代项目对性能要求普遍降低

      • 不是所有项目都需要极致的运行性能。
      • 一旦性能要求不高,开发效率就成了更重要的指标。
      • 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)

全章核心结论

  1. Python 是什么:一门解释型、动态、强类型(Python 3 中)、多范式(面向对象 + 函数式 + 过程式)的高级编程语言。
  2. 为什么学 Python:简洁优雅、应用广泛、开发效率高、生态成熟、对新手友好。
  3. Python 的代价:运行速度相对较慢(但大多数项目不在乎)。
  4. Python 适合谁:从专业开发者到普通办公人员,几乎所有用电脑的人都能受益。
  5. 课程如何学习:重视基础语法、理解 Pythonic 风格、动手实践(爬虫实战)、持续迭代。
  6. 正确打开 Python 的方式:遇到问题 → 随手拿起 Python → 写个小工具解决。