购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

Python这门语言很独特。作为一名软件开发者,我沉迷于其特殊性。编写良好的Python程序能令人感受到一种艺术美。我喜欢探寻对于一个问题最“Pythonic”(具有Python特质精神的)解决方案,然后回顾并思考是否有其他方案能获得相同效果。

遗憾的是,多年以前,我习惯于从已掌握的其他编程语言的角度来看待Python,从而陷入困境。那时,我虽然可以读、写Python代码,但无法形成那些“显而易见”的惯用编程模式。就像只能通过查阅词典来生硬地说外语一样——我虽然能编写出Python代码,但是无法真正基于Python来思考问题,我其实错失了这门语言的本质内涵。

直到我开始真正理解Python——用它来思考,我才发现这门语言的独特之处。解决方案变得显而易见。设计方案变成一种乐趣,而不是一个谜团。

当一位新程序员开始尝试使用Python时,他几乎没有先入为主的偏见,因为没有其他编程语言作为“母语”来干扰他对Python的探索。但是对于将Python作为第二甚至第三语言的老程序员,思想上的转变在某些方面要艰难得多——他们不仅必须学习新知识,而且在很多方面必须忘掉旧知识(这尤其困难)。

本书正是这一艰难旅程的最佳指南。

本书为谁而写?

本书适合想要学习编写专业Python程序的读者阅读,无论是零编程基础的读者,还是已掌握其他编程语言的开发者。本书特别关注如何以“Pythonic”方式来完成任务,可以帮助读者不受其他编程语言的影响来学习地道的Python编程方法。

如果你是一位中级Python开发者,一样能发现本书很有用。尽管我使用Python很多年了,但是对其中的一些主题,我直到最近才突然感到豁然开朗。本书包含了对这些主题的解释。

“简单”到底是什么意思?

本书的所有主题,乍一看可能都不简单。读者可能也会怀疑,这么厚的书,怎么可能“简单”?

我为本书起名为“Python超简单” ,其实是想描述读者阅读完本书后的体验,而不是读之前的期待。我们应该认识到,任何值得学习的主题,在初次接触时,都会令人感觉不可逾越。同样,任何概念如果值得向一名软件开发者阐述,都必须具备足够的深度,以致丧失“简单”这种先验性标签。

本书的目标是让读者在阅读完每章后,无论这章的主题最初看起来多么复杂,都能不禁感叹:这些内容其实是显而易见的,实际上“超简单”!此时,读者就可以像使用母语一般自然地使用Python进行思考。

为了帮助读者达到这种理解程度,本书通常从各主题的最基础、最明确的形式开始:先确立一个基点,再一层层叠加,最终形成惯用模式。本书希望通过这种方式,让读者精确又舒适地理解Python每个功能的由来以及惯用模式。

书中包含什么内容?

本书共5个部分。和其他面向初学者的图书不同,本书假定读者想尽快开始编写代码,且编写出的代码能达到产品级质量(而不是特别简单的示例代码)。本书需要读者事先完成一些初步工作,这样可以确保读者更容易地将新知识应用到实际项目中,并获得反馈。

第一部分“Python环境”(第1~4章)让读者首先掌握Python的基础知识,包括Python的哲学、开发环境、基本语法、项目结构和代码导入。这将为读者编写产品级代码奠定坚实的基础。

第二部分“基本结构”(第5~8章)探索Python的变量、数据类型、函数、类、对象、错误和异常等基本结构,并讲解如何充分利用它们。

第三部分“数据和流程”(第9~12章)介绍操作数据和控制执行流程的许多独特方法,包括集合、迭代、生成器、推导式、文本输入/输出、上下文管理、二进制和序列化等。

第四部分“高级概念”(第13~17章)揭示各种可以令读者编写出更强大的代码的高级策略,包含继承、混入、元类、抽象基类、自省、泛型、异步、并发、线程和并行等。这些正是以往多数课程和图书中略过的各种“可怕”主题。

第五部分“超越代码”(第18~21章)讲解实际项目的打包、分发、调试、日志、测试和剖析等内容,并介绍各种值得探索的Python应用方向。

书中不包含什么内容?

本书不会过多重复编程的基本概念,例如(从一个与编程语言种类无关的角度来看)什么是变量和函数,以及类和对象之间的区别是什么等。本书仅简要定义一些必要概念,即那些在编程世界中并不普遍存在的概念。

本书并不想对Python相关主题进行详尽无遗的讨论,而是更多关注原因和方法,以帮助读者构建坚实的基础。本书鼓励读者通过额外查阅资料来拓展理解,如通过查阅官方文档了解库函数等概念。对于标准库中很多流行的功能,比如随机数和日期/时间操作等,本书在示例中调用时仅稍作解释。

为了控制本书的探讨范畴,本书不会涉及太多第三方工具和库。虽然我经常被要求讨论Python中默认工具的各种流行替代方案,但由于这些替代方案总是会像季节更替般从“流行”快速变得“失宠”,因此我建议使用默认方案。当然,有零星意外,但仅限于那种在Python生态中无所不在,甚至让标准库黯然失色的第三方工具。

一般来说,如果某个第三方工具特别值得关注,本书会向读者推荐其官方网站和官方文档。

如何阅读本书?

本书的目标是成为一本实操手册,建议读者从头按顺序阅读各章。无论是Python新手,还是已经尝试过一段时间却感觉没有掌握要领的Python用户,都可以从本书中填补许多从未意识到的知识空白。

当然,如果想立即理解某个特定主题,可以直接跳到对应章节开始探索。多数章节其实是独立编撰而成的,但本书始终默认读者已经阅读并理解了前置章节的所有内容。

关于词汇

几乎所有Python图书或在线文章都从其他编程语言借用词汇,比如元素、变量等。虽然通常认为这样能有效将Python概念和读者现有知识关联起来,但我认为这种词汇借用最终将适得其反。如果基于其他语言来理解Python,是无法写出清晰、符合Python惯用模式的代码的。更重要的是,如果读者习惯使用不规范的词汇,就会发现官方文档难以阅读。

因此,本书坚持使用官方词汇。已出版图书中坚持这一立场的非常少,本书很自豪能成为其中之一。毕竟,想成为当地人,就必须学会使用当地语言。

理论概述

如果基于读者已掌握的语言,那么读者的理论库中总是可能存在一些盲区。比如,Haskell开发者可能不熟悉面向对象编程,C++程序员可能不熟悉函数式编程。

为了消除这些隔阂,本书偶尔会提供理论概述,简要阐述与某些编程范式、模式相关的基本理论和最佳实践。所以,如果读者已经懂得某个特定概念,可以跳过对应的理论概述,直接学习Python领域的特定内容。

主观或客观?

其实,从一本技术书中彻底清除个人观点几乎是不可能的,尤其是像本书这样专注于探讨惯用法的书。不过,我认为自己已经尽了最大努力来保持客观。

本书不是我的个人作品,而是从Python社区提炼出的集体智慧的结晶。本书经历了两年的激烈辩论,以及研究、实践,我自身的开发习惯也发生了巨大变化。开始创作本书时的我和现在的我,可以认为完全不是同一个Python开发者了。

即便如此,任何一本书也不可能让所有人满意。有时,我不得不在正文中特别提到从未达成满意结论的辩论。即使那些我认为已经圆满解决的主题,也可能引发另一些Python开发者的强烈负面反应。事实上,其中有些争论也激起过我自身的强烈反应,直到我真正理解了它们。

所以我建议大家以开放的心态阅读本书,即使你自认为早已相当熟悉编程和Python。我在本书中尽力解释了所有建议背后的理由,也同样鼓励读者在采纳任何建议时能以相同的认真程度进行思考。

示例

本书中的大部分示例代码是我仔细构建而成的,以便展示对应主题是如何实现的。在大多数情况下,我会故意复杂化示例,以强调其他教程经常忽略的问题和意外。对于复杂化的示例,我会指出来,但同时,我也可能会简化或绕开与当前主题无关的部分。

因此,本书中的示例代码通常比其他教程中的示例代码更长,章节篇幅看起来也更长。不用因页数太多而感到气馁,一章一章地学习就好。

除非另行说明,书中所有示例都可运行,或者以可预见的方式运行失败。所有代码始终遵守Python风格约定。强烈建议读者亲手输入每个示例的代码并运行

我努力对Python代码段进行了标注,并将其保存为可运行的示例。我给出了文件名,并对代码段进行编号(:1、:2,以此类推)。当代码被修改时,为代码编号追加字母,比如2b意味着是对代码段2a的改进,而修改的部分将被加粗。

项目

有人问过我,为什么没在书中提供一个完整的综合项目?答案很简单:本书假定读者已有自己想开发的Python项目,所以本书不会提供另外一个项目来分散读者的注意力,而是专注于展示可以直接用于读者项目的各种工具或方法。

如果读者还没有自己的项目,这正是开始的好时机,开始构建你人生中的第一个项目吧!想想你希望得到哪个问题的解决方案(或更好的解决方案),然后开始构建相应的项目。从问题的一小部分开始就好。创建第一个项目并无魔法,只需让其成为你真正会使用的工具即可。别用“完美”来要求你的第一次尝试。技术社区中有过断言:“你总是会抛弃第一个。”所以一开始不用害怕哪儿构建错了!本书专注于为你提供通向成功的工具。

当然,如果开发一个项目对你而言尚有难度,那么可以先认真完成本书中给出的各项示例。

任何情况下,都强烈建议你创建一个自己的“靶场” 项目,在一个安全环境中开始尝试Python,这样就不用担心你的破坏性行为会对其他环境造成损害。本书将在第2章和第3章介绍Python代码的运行,并在第4章介绍Python项目的结构。在第18章讨论实际项目的打包和分发时,将重新讨论Python项目的结构。

阅读本书的准备工作

● 读者应已掌握编程的基本要点。本书教授的是Python而不是编程

● 读者应有可操作的计算机,能运行Python 3.7或更高版本。如果还没安装Python,不用担心,第2章将进行介绍。

● 读者应了解如何在计算机上使用命令行及相关基础命令,尤其是相对路径和绝对路径,以及导航文件系统。如果还不知道这些,建议先学习一下再来阅读本书。

● 读者应该有稳定的互联网连接(即便不够快),以支持文档查阅和偶尔进行包的下载。当然,书中示例已尽可能设计成没有互联网也可以工作。

现在,去准备一杯你最爱喝的饮料,拿好笔记本和笔,在计算机前坐稳,让我们开始吧! bvjsIRY1vVpbndJ6+Y1VOwNlOsiuiDlvTJWGPcESzDBv+VUUkjofVt2n82NtoPSm

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开