Python基础进阶(前言)

前言

你好,世界!作为一个年轻的程序员和90年代后期的黑客爱好者,我经常认真阅读最新一期的2600:黑客季刊。有一天,我终于鼓起勇气参加了杂志社在我所在城市举办的每月一次的聚会,惊叹于其他人看来是多么厉害。(后来,我意识到他们中的许多人的自信程度要高于实际水平。)整个会议我都在点头同意其他人说的话,努力跟上他们的谈话。我离开了那个聚会,决心把醒着的每一个小时都花在学习计算、编程和网络安全上,这样我就可以参加下个月聚会的讨论。

在下一次见面会上,我继续只是点头,仍然觉得比其他人要笨。所以我再一次下定决心要学习,变得“足够聪明”才能跟的上。一个月又一个月,我的知识增加了,但却总是感觉落后。我开始意识到计算机领域的浩瀚,并担心我永远不会学习完。

我比我的高中朋友更了解编程,但肯定不足以找到一份程序员的工作。上世纪90年代,谷歌、YouTube和维基百科还不存在。但即使有这些资源,我也不知道如何使用它们;我也不知道下一步该学什么。相反,我学会了如何用不同的编程语言编写Hello, world!的程序,但仍然觉得自己没有取得真正的进步。我不知道如何在基础上进阶。

软件开发不仅仅是循环和函数。但是一旦你完成了一门初级课程或阅读了一本编程入门书,你对更多教程的探索的结果是另一个Hello, world!。程序员经常把这段时间称为绝望的沙漠:你在不同的学习材料中漫无目的地游荡,感觉自己没有进步。对于初学者来说,你变得有水平了,但是对于处理更复杂的问题来说,你的水平又太不足了。

沙漠中的人有强烈的冒名顶替综合症。你不觉得自己是一个“真正的”程序员,也不知道如何像“真正的”程序员那样编写代码。我写这本书是为了读者说明。如果您已经学习了Python的基础知识,那么这本书应该可以帮助您成为一名更有能力的软件开发人员,并消除这种绝望感。

读者对象

本书的目标读者是那些已经完成了基本Python教程并想了解更多的人。你从中学习到的教程可能是我以前的书《Python变成快速上手》(No Starch Press,2019),Eric Matthes的Python速成课程(No Starch Press,2019)或在线课程。

这些教程可能已经让你对编程有了点感觉,但你仍然需要更多的技能。如果你觉得你还没有达到专业程序员的水平,而且不知道如何达到这个水平,那么这就是为你准备的书。

假如你是通过Python之外的另一种语言入门编程的,你想直接跳到Python及其工具生态系统中,而不必重新阅读同样的Hello,world!基础知识。如果是这样的话,您不需要阅读数百页解释基本语法的文章;您可以浏览https://learnxinyminutes.com/docs/python/或者Eric Matthes在https://ehmatthes.github.io/pcc/cheatsheets/README.html的文章,看这些就足够了(译注:看菜鸟教程就行)。

关于本书

这本书涵盖的不仅仅是更深层次的Python语法。本书还讨论了如何使用命令行和专业开发人员使用的命令行工具,如代码格式化、linters和版本控制。我将解释是什么使代码就有可读性,以及如何编写整洁的代码。我已经介绍了一些编程项目,所以您可以看到这些原则在实际软件中的应用。虽然这不是一本计算机科学教科书,我还是解释了大O算法分析和面向对象设计。

从来没有一本书就能把一个人变成一个专业的软件开发人员,但我写这本书是为了让你进一步更深地了解计算机的知识。我将介绍几个你可能只会通过辛苦积累的经验零碎地发现的话题。在读完这本书之后,你的基础将会更加稳固,能更好地迎接新的挑战。

尽管我建议您按顺序阅读本书中的章节,但您也可以随意跳到感兴趣的章节:
第一部分:入门
第1章:处理错误和寻找帮助 向你展示了如何有效地提出问题并自己找到答案。它还教你如何阅读错误信息和在线求助的礼仪。
第2章:环境设置和命令行 说明如何在用命令行设置开发环境和PATH环境变量。
第二部分:最佳实践、工具和技巧
第3章:用Black格式化代码 介绍了pep8样式指南,以及如何格式化代码以使其更具可读性。您将学习如何使用Black代码格式化工具自动完成。
第4章:选择可理解的名称 描述如何命名变量和函数以提高代码可读性。
第5章:查看代码信息 列出了几个潜在的危险信号,它们可能表明代码中存在bug。
第6章:编写Python式代码 详细介绍了几种编写惯用Python代码的方法以及Python代码的优点。
第7章:编程术语 解释了在编程领域中使用的技术术语和经常相互混淆的术语。
第8章:常见的Python陷阱 涵盖了Python语言中常见的混淆和错误源,以及如何纠正它们,以及要避免的编码策略。
第9章:深奥的Python特殊语法 涵盖了Python语言的一些独特的语法,比如字符串内接和反重力复活节彩蛋,你可能不会注意到。通过找出某些数据类型和运算符导致这种意外行为的原因,您将进一步了解Python的工作原理。
第10章:编写有效的函数 详细说明了如何构造函数以获得最大的实用性和可读性。您将学习*和**参数语法、大函数和小函数之间的权衡,以及函数编程技术,例如lambda函数。
第11章:注释、docstring和类型提示 介绍了程序中非代码部分的重要性以及它们如何影响可维护性。它包括您应该多久编写一次注释和docstring,以及如何使它们具有意义。本章还讨论了类型提示以及如何使用静态分析器(如Mypy)来检测bug。
第12章:使用Git组织代码项目 描述了如何使用Git版本控制工具来记录对源代码所做更改的历史记录,并恢复工作的以前版本,或者跟踪bug首次出现的时间。它还涉及如何使用Cookiecutter工具来构造代码项目的文件。
第13章:度量性能和大O算法分析 解释了如何使用timeit和cProfile模块客观地度量代码的速度。此外,本文还介绍了Big-O算法分析,以及它如何让您预测代码的性能随着需要处理的数据量的增长而降低的方式。
第14章:实践项目 通过编写两个命令行游戏来应用本部分所学的技术:汉诺塔(Tower of Hanoi),一个将圆盘从一个塔移动到另一个塔的益智游戏,以及两个玩家的经典四排棋盘游戏。

第三部分:Python面向对象
第15章:面向对象编程和类 定义了面向对象编程(OOP)的角色,因为它经常被误解。许多开发人员在他们的代码中过度使用OOP技术,因为他们相信其他人都这么做,但这会导致复杂的源代码。本章教你如何编写类,但更重要的是,它教你什么时候应该和不应该使用它们。
第16章:面向对象编程和继承 解释了类继承及其在代码重用中的应用。
第17章:python式面向对象:Properties和Dunder方法 介绍了面向对象设计中Python特有的特性,如属性、Dunder方法和操作符重载。

你的编程之旅

从新手到有能力的程序员的过程常常让人感觉像是试图从消防水龙带里喝水。有这么多的资源可供选择,您可能会担心在次优的编程指南上浪费时间。

读完本书后(甚至在阅读本书时),我建议您继续阅读以下介绍性材料:

Python Crash Course (No Starch Press, 2019)
Impractical Python Projects (No Starch Press, 2018)
&emspSerious Python (No Starch Press, 2018)

但是Python的技术方面只是它的优势之一。Python有自己的社区,他们负责创建一个友好的、可访问的文档和支持体系,这是其他编程生态系统无法比拟的。一年一度的PyCon会议,连同许多地区Python程序员,为不同水平者举办了各种各样的会谈。PyCon的组织者在网上免费提供这些讲座https://pyvideo.org/。标签页可以让您轻松找到与您的兴趣相对应的话题。

要深入了解Python语法和标准库的高级功能,我建议阅读以下文章:
Effective Python (Addison-Wesley Professional, 2019) by Brett Slatkin is an impressive collection of Pythonic best practices and language features.
Python Cookbook (O’Reilly Media, 2013) by David Beazley and Brian K. Jones offers an extensive list of code snippets to upgrade any Python novice’s repertoire.
Fluent Python (O’Reilly Media, 2021) by Luciano Ramalho is a masterwork for exploring the intricacies of the Python language, and although its near-800-page size might be intimidating, it’s well worth the effort.

祝你的编程之旅好运。我们开始吧!

猜你喜欢

转载自blog.csdn.net/qq_42893430/article/details/113125844