【前言】
Python是当今最流行的语言之一。相对较新的领域如数据科学、人工智能、机器人和数据分析,以及传统的专业如Web开发和科学研究等,都在拥抱Python。对于用Python这样的动态语言编写代码的程序员来说,确保代码的高质量和无错误变得越来越重要。作为一名Python开发人员,你希望确保正在构建的软件能够让用户满意,而不会超出预算或无法发布。
Python是一种简单的语言,但是很难写出好的代码,因为目前可以教我们写出更好的Python代码的资源并不多见。
目前Python中缺乏的是代码一致性、模式以及开发人员对良好Python代码的理解。对于每个Python程序员,良好的Python代码都有不同的含义。出现这种情况的原因可能是Python被用于如此多的领域,以至于开发人员很难就特定的模式达成一致。另外,Python没有像Java和Ruby那样有关于整洁代码的书籍。已经有人尝试编写这类书籍,但这样的尝试比较少,而且坦率地说,它们的质量也不高。
本书的主要目的是为不同级别的Python开发人员提供技巧,以便他们能够编写更好的Python软件和程序。无论你在哪个领域使用Python,本书都可以为你提供各种各样的技巧。本书涵盖了从基础到高级的所有级别的Python知识,并向你展示了如何使代码更符合Python的风格。
请记住,编写软件不仅是一门科学,而且还是一门艺术,本书将教你如何成为一名更好的Python程序员。
【译者序】
自1991年Python诞生以来,到现在将近30年了。如今,Python已经被很多领域的专业人士广泛使用,亦有相当多的小学生开始学习Python编程,可见其被接受的程度非常高!由于其学习门槛低、语法简单、易学易用等特性,Python已经被诸多领域广泛使用,如金融工程、人工智能、数据分析、科学计算、自动化测试等,这些领域中既有专业的软件开发人员也有非专业的软件开发人员。随着时间的推移,Python有可能会发展成一门基础学科,所以,学好Python是在一些领域生存发展的必备技能。
我翻译的第一本书是《C++代码整洁之道》,已经发现身边的一些公司和培训机构都有购买,大家的反响还是很不错的,网上也有不少的评论(当然,那本书是讲C++相关的知识)。这本书是我翻译的第二本书,希望这本书也和第一本书一样能够被广大读者所接受。
自我学习Python以来,与之前学习过的C++、C#、Java、Golang、Node.js等编程语言相比,Python给我的感觉是:入门容易(小学生都可以使用Python写程序),深入难(在工作中发现很多自称熟悉Python的人,不知道生成器是什么、迭代器是什么、Python中有哪些数据结构),可见选择一本好的教材是多么重要。虽然网上有很多关于Python的视频,但结合我自身的经验,不建议通过视频学习Python,因为投入产出比不高,视频中讲解的内容往往是过时的,会给初学者带来较大的困惑。
如果你有幸购买了本书,并且是Python爱好者,那么强烈建议你仔细地阅读本书的每一个章节。这些章节之间虽没有必然的联系,但还是建议你按顺序阅读。当然,本书的内容有些难度,在阅读本书前,建议你对Python的基础知识先有一定的了解,否则可能会看不太明白,因为本书没有从Python的基础语法讲起。
市面上常见的Python有两大版本:一个版本是Python 2.x系列,目前已经停止维护,但还有一些公司在使用;另一个版本是Python 3.x系列,本书中所讲的都是Python 3.x系列的知识。据不完全了解,绝大部分公司的新项目都已经基于Python 3.x进行开发了,所以尽快掌握Python 3.x吧!Python 2.x和Python 3.x两大系列差异较大,其中的原因与Python之父的性格有较大关系,想知道详细情况的读者可在网上自行查找资料。
【阅读本书前,建议先了解以下基础知识】:
1)如何安装Python 3.x最新版本的解释器,截止到本书译完,最新的稳定版本是Python 3.8,更多信息请参见https://www.python.org/downloads/。安装一款自己喜欢的IDE开发工具,初学者一定不要在记事本中写代码,切记,切记!!!
2)Python的基础知识—关键字、控制语法、常用数据结构等。
3)了解如何使用IDE(如pycharm、Sublime Text、VIM/Emacs),建议写一些Python的练习代码,如读写文本文件、九九乘法表、数据结构的使用等。
4)对软件开发人员而言,最好具有面向对象开发的基础,并且知道一些基本的原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、迪米特法则等。
5)对测试人员而言,最好了解unittest和pytest框架。
【通过阅读本书,你将学到以下主要内容】:
1)如何编写整洁的Python代码。
2)Python的数据结构及特点。
3)Python中的函数、类和模块(模块在很多书中没有提及或只是简单提及,本书有着较详细的讲解)。
4)装饰器、生成器、迭代器和上下文管理器的作用和使用场景。
5)Python 3.x中的一些新特性,如async及协程、类型标注等。
6)调试和单元测试的一些工具。