本章概要
获取有关Python的更多信息
使用Python创建在线程序
扩展Python编程环境
提高程序性能和开发者水平
这本书是你积累Python编程经验一个很好的起点,但某些时候你可能需要使用其他更多的资源。本章为你列出了十大令人惊叹的编程资源,你可以使用它们来积累更多的开发经验。创建Python应用程序时,使用这些资源可以帮助我们大大地节省时间和精力,并且让我们创建出更棒的程序。
当然,本章只介绍一部分Python资源。网络上有大量的Python文档,以及数不清的Python代码。就拿Python库来说,其数量也多得惊人,要全面介绍它们,你得写整整一本书(或许两本)才行。本章的主要目的还是为了启发大家的思维,让大家知道去哪里查找自己需要的资料。搜索资料时,请不要局限于本章介绍的内容,而要以它们为起点,奔向更广阔的领域。
1 使用Python在线文档
使用Python的一个主要部分是了解这种语言中有哪些内容可用以及如何扩展它来做其他任务。在线Python文档(写作本书时的版本为3.6.x,当你读到这里时文档版本很可能已经更新了)提供了更多有关Python的参考资料,包括如下主题:
- 当前Python版本添加的新特征;
- 完整教程;
- 完整库参考;
- 完整语言参考;
- 如何安装和配置Python;
- 如何使用Python执行特定任务;
- 从其他源安装Python模块(作为Python扩展的手段);
- 发布自己创建的Python模块,供其他人使用;
- 如何使用C/C++扩展Python,以及嵌入你创建的新特征;
- 面向C/C++开发者(想使用Python扩展他们的应用程序)的完整参考;
- FAQ页面。
上面所有信息都是以易于访问和使用的形式提供的。查找信息时,除了使用常见的内容目录之外,你还可以使用索引进行查找。例如,如果你只对特定的模块、类或方法感兴趣,那么你可以使用全局模块索引(Global Module Index)查找。
此外,你也可以把自己使用Python时遇到的问题在官网中进行提交。虽然解决与产品相关的问题很重要,但是和其他语言一样,Python中也会存在bug。找出和修正这些bug会让Python变得更好。
在线文档使用起来很灵活。在文档页面的左上角有两个下拉列表框:第一个是语言下拉列表框,从中你可以选择自己喜欢的语言(写作本书时,只有英语、法语和日语3种语言可供选择);第二个是Python版本选择下拉列表框,里面提供了一些Python早期版本,包括Python 2.7。
2 使用LearnPython.org教程
网上Python学习教程有很多,大都做得很不错,但相比于LearnPython网站上的教程,它们都有一个不足,那就是缺少交互性。在LearnPython网站上学习Python时,你不只是在阅读有关Python的知识,还可以使用网站提供的交互环境亲自动手试一试。
到这里,本书中的简单教程你可能都学过了。但LearnPython网站上的一些高级教程你可能还没学过。这些教程主要讲解以下主题。
- 生成器:
返回迭代器的特殊函数。
- 列表生成式:
一种基于现有列表生成新列表的方法。
- 可变函数参数:
对第15章“使用带有可变参数列表的方法”内容的补充。
- 正则表达式:
用于匹配字符模式的通配符设置,比如电话号码。
- 异常处理:
对第10章内容的扩展。
- 集合:
这是一种特殊的列表,里面不包含重复元素。
- 序列化:
讲解如何使用JSON这种数据存储技术。
- 偏函数:
用于创建派生于较复杂函数的简单函数的专门化版本。比如,你有一个带有两个参数的multiply()函数,那么名为double()的偏函数可能只需要一个参数,这个参数总是要乘以2。
- 代码审查:
提供检查类、函数、关键字的能力,用于判断用途和功能。
- 装饰器:
一种对可调用对象进行简单修改的方法。
3 使用Python做Web编程
本书探讨了基本编程的来龙去脉,其中涉及的都是很简单的桌面应用程序。有许多开发人员专门使用Python创建各种各样的在线应用程序。Python Web编程网站可以帮助你从桌面程序开发转向在线应用程序开发。它并非只讲解一种在线应用程序,而是涵盖了几乎所有应用程序(免费提供整本书)。教程分为如下3个主要部分(和许多次要部分)。
- 服务器
- 开发应用程序服务器端框架
- 创建CGI脚本
- 提供服务器应用程序
- 开发内容管理系统(CMS)
- 通过Web服务方案设计数据访问方法
- 客户端
- 使用浏览器和基于浏览器的技术
- 创建基于浏览器的客户端
- 通过各种技术(包括Web服务)访问数据
- 相关
- 为基于Python的在线计算创建通用方案
- 使用数据库管理系统(DBMS)
- 设计应用程序模板
- 构建内部网解决方案
4 获取更多库
或许你会认为Pythonware这个站点平淡无奇,但当你进入这个网站后,你就会被它深深吸引。这个网站提供了大量第三方库,借助这些库,你可以使用Python做更多的工作。
网站里面有大量链接,为我们提供了很多有用的资源。其中,通过“Downloads”这个链接你可以访问如下库。
- aggdraw
:
这个库帮助你绘制平滑的线条。
- celementtree
:
这个库是elementtree库的扩展库,可以让你更快、更高效地使用XML数据。
- console
:
这是一个窗口界面,帮助我们创建出更好的控制台程序。
- effbot
:
包含了许多有用的附加组件和实用程序,包括ENews RSS新闻阅读器。
- elementsoap
:
这个库可以帮助我们创建到Web服务提供者的SOAP(简单对象访问协议)连接。
- elementtidy
:
这是对elementtree库的扩展,可以帮助我们创建出更好看、功能更强大的XML树。
- elementtree
:
这个库可以帮助我们更高效地使用XML数据。
- exemaker
:
这是一个从Python脚本创建可执行程序的实用程序,借助它,你可以在机器上像运行其他应用程序一样运行脚本。
- ftpparse
:
这个库用来使用FTP站点。
- grabscreen
:
这个库用来截屏。
- imaging
:
向Python图像处理库(PIL)提供源代码分发,该库允许你向Python解释器添加图像处理功能。通过它,你可以定制PIL来满足自己特定的需求。
- pil
:
PIL的二进制安装程序,它可以让PIL库更容易地安装到你的系统中。(还有其他基于PIL的库,比如pilfont库,这个库用于向基于PIL的应用程序添加字体增强功能)。
- pythondoc
:
这个实用程序用来从Python代码中的注释创建文档,其工作原理与JavaDoc类似。
- squeeze
:
这个实用程序用于将包含在多个文件中的Python程序转换为单文件或双文件的发行版,并能够在Python解释器中正常执行。
- tkinter3000
:
这个库是Python的标准GUI部件库,包含许多子产品。这些部件本质上是一些代码,用于创建GUI应用程序中的控件,如按钮。tkinter3000库有许多附加组件,例如wckgraph,它帮助你向应用程序添加图形支持。
5 使用IDE快速创建应用程序
交互式开发环境(IDE)帮助你使用特定语言创建应用程序。Python本身自带了一个集成开发环境——IDLE,适合用来做代码实验,但用过一段时间之后你就会发现它有不少局限性,例如,IDLE并不提供许多开发人员喜欢的高级调试功能。另外,当你要创建图形应用程序时,IDLE很难帮你做到这一点。
由于IDLE本身存在诸多的局限性,所以本书才决定采用Jupyter Notebook来代替IDLE(本书第一版采用的是IDLE)。不过,在某些情况下,你还是会发现Jupyter Notebook并不能满足你的需求。如果你问50个开发人员哪些工具(尤其是问IDE时)是最好用的万金油,他们的回答大都不一样,几乎很难达成共识。每个开发人员都有自己喜欢的工具,也都不太愿意去尝试其他工具。通常,开发人员会花很多时间来学习某款IDE工具,并通过扩展它以满足自己特定的需求(当然,这要求IDE本身支持扩展)。
在选定某个IDE之前要多尝试几种不同的IDE,这点很重要,因为一旦你选定了某种IDE,以后就很难再做出改变了。(一旦你选中某个IDE之后,就不想再换成其他IDE了,其中最常见的原因是项目类型不兼容,每次换IDE时,你都必须重新创建项目,此外还有许多其他原因,你可以在网上找到)。PythonEditors维基主页列出了许多IDE,你可以尝试一下它们。并且表格中为你提供了每个IDE的详细信息,你可以根据这些信息和自己的需求立即排除某些IDE。
6 更容易地检查语法
IDLE提供了某种程度的语法高亮显示功能,这有助于我们查找代码中的错误。比如,如果你输入错误的关键字,IDLE就不会将其颜色更改为系统中定义好的关键字颜色。这样,你就可以立即知道错误出在哪里,以及如何修改它,而不必等到应用程序运行后才发现错误(有时需要经过几个小时的调试才能找到错误)。
Jupyter Notebook也提供了语法高亮显示功能,还有一些标准IDE所不具备的高级错误检查功能。不过,对于某些开发人员来说,它本身可能也有一些不足,比如你必须实际运行单元格才能看到错误信息。有些开发人员更喜欢交互式语法检查方式,在这种检查方式中,IDE会立即标记出代码中的错误,甚至在开发人员离开错误代码行之前,其中错误就已经被标识出来了。
python.vim实用程序提供了增强型的语法突出显示功能,使得在Python脚本中查找错误更加容易。这个实用程序以脚本形式运行,这使得它可以在任何平台上都能快速、高效地使用。此外,你还可以根据需要调整其源代码以满足特定的需求。
7 使用XML
现在大多数应用程序都使用可扩展标记语言(XML)来进行各种类型的数据存储工作。你的系统中可能就有很多XML文件,但你可能认不出它们,因为XML数据存在于许多文件扩展名之下。比如,许多用来保存应用程序设置的.config文件使用的就是XML。简而言之,现在的问题不是编写Python应用程序的过程中你会不会遇到XML,而是你什么时候会遇到它。
与其他存储数据的方法相比,XML有许多优点,比如,XML是平台独立的。你可以在任何系统上使用XML,只要系统认识这种文件格式,同一个文件在不同系统上就都是可读的。由于XML是平台独立的,所以你可以在许多其他技术(比如Web服务)中看到XML的身影。此外,XML学起来相对容易,而且还是文本的,所以你可以大量使用它,而不用担心会引起太多问题。
学习XML本身是很重要的,你可以在类似W3Schools的教学网站上查找相关教程来学习。有些开发人员在没有掌握XML文件相关知识的情形下就急于着手做各种工作,后来他们发现有些Python资料看不懂,因为这些资料往往会假设读者知道如何编写基本的XML文件。W3Schools这个网站很不错,它把整个学习过程分成若干章节,这样每次你就可以使用一些XML,如下:
- XML基础教程;
- 验证你的XML文件;
- XML和JavaScript(JavaScript看上去不重要,但在许多在线应用场景中,JavaScript应用广泛)配合使用;
- 了解与XML相关的技术;
- 使用XML高级技术;
- 使用XML示例使XML更易用。
{利用W3Schools学习计算机技术!!}
在线学习计算机技术最常用的网站是W3Schools,你可以在其官网中找到要学习的内容。在这个网站中,你可以找到创建各种应用程序所需要的Web技术。所涉及的主题包括:
- HTML;
- CSS;
- JavaScript;
- SQL;
- JQuery;
- PHP;
- XML;
- ASP.NET。
但是,你应该知道,这对Python开发人员来说只是一个起点。先利用W3Schools中的学习资料来切实掌握底层技术,然后通过Python专门资料来提升你的技能。大多数Python开发人员都需要综合各种学习资料来提升自己的技能,从而在编写应用程序的过程中展现出与众不同的一面。
掌握了有关XML的基础知识之后,你需要学习如何在Python中使用XML。网上有各种技术专题,你可以在各个网站中找到关于使用Python处理XML的教程。通过学习这些教程,你可以快速了解有关XML的知识,并让你能够快速创建出使用XML的Python应用程序。
8 克服常见的Python新手错误
毫无疑问,每个人编写代码时都会犯错误,即便那些有着30多年编程经验的老程序员(他们大概从幼儿园就开始学习编程了)也不例外。每个人都会犯错,但没人喜欢犯错,有些人犯了错还不愿意承认,其实没这必要,犯了错时,不要太沮丧,只要把错误改正过来,你的生活就可以继续下去。
当然,犯错误和犯可以避免的常见错误是有区别的。不错,即使是专业人士有时也会犯一些本可以避免的常见错误,但这种可能性要小很多,因为他们过去已经经历过这种错误,并训练自己去避免它。你可以通过避免新手错误来获得竞争优势。
对于刚开始学习Python的人来说,还有许多其他资料可用,但是相比之下,上面这些资料内容简洁且容易理解。你可以在较短的时间内读完它们,做一些笔记以备用,并避免那些让每个人都会记住的尴尬错误。
9 了解Unicode
尽管本书试图回避Unicode这个棘手的话题,但是当你开始编写正规应用程序时,你最终还是会碰到它。不过,遗憾的是,Unicode是由一个委员会来决定的,所以最终就有了不止一个定义和标准。简而言之,Unicode没有一个统一的定义。
当你开始使用更高级的Python应用程序时,你会遇到大量的Unicode标准,特别是当你的程序要在多种语言(每种语言似乎都有自己的Unicode)下运行时。请记住,我们需要了解Unicode是什么,下面提供给你一些学习主题:
- Unicode和字符集;
- Python中的Unicode更新;
- Python编码和Unicode;
- Unicode概述,参见Unicode官网。
##10 加快Python程序的运行速度
就应用程序来说,没有什么比性能差更能吓跑用户的了。当应用程序性能很差时,用户根本就不愿意使用它。事实上,糟糕的性能是造成应用程序在企业环境中失败的一个重要原因。即便有组织愿意花费大量金钱去创建一个万能的应用程序,但是如果这个程序的运行速度太慢,或者有严重的性能问题,也不会有人愿意使用它。
事实上,性能是可靠性、安全性和速度的综合,这3个因素构成了“性能三角”。你可以在作者的博客中读到有关性能三角形的内容。许多开发人员只关注性能的速度部分,但最终没能实现他们的目标。重要的是查看应用程序使用资源的各个方面,并确保你使用了最好的编码技术。
网上有很多资源可以帮助你理解Python应用程序的性能,希望读者可以广泛学习。