您的位置首页生活百科

Python可以自学吗?

Python可以自学吗?

当然可以自学Python。

编程 (programming)指的是编写让计算机执行的指令。这些指令可能告诉计算机打印Hello, World!,从因特网爬取数据,或者读取某个文件的内容并保存至数据库。这些指令被称为代码(code)。程序员用许多不同的 编程语言 来编写代码。在过去,编程的难度更大,因为程序员必须要使用晦涩难懂的底层编程语言(low-level programming language),如汇编语言(assembly language)。说一门编程语言是底层语言,指的是其与高级编程语言(读起来更像英语的编程语言)相比,更接近用二进制(0和1)编写指令,因此也更难理解。下面是一个用汇编语言编写的简单程序:

# http://tinyurl.com/z6facmkglobal _start section .text_start: mov rax , 1 mov rdi , 1 mov rsi , message mov rdx , 13 syscall ; exit(0) mov eax , 60 xor rdi , rdi syscall message: db "Hello, World!", 10

下面则是用一门现代编程语言编写的同一个程序:

1 # http://tinyurl.com/zhj8ap62 3 4 print("Hello, World!")

显而易见,如今程序员的工作容易多了。不再需要花费大量时间学习晦涩的底层语言才能编程,相反只要学习一门非常易读的语言Python即可。

如果你之前没有任何编程经验,担心自己无法胜任编程工作,只要你坚持,那你完全有能力做到。人们对程序员有一些常见的误解,比如程序员都得擅长数学。这是错误的印象,不过编程确实是一件困难的工作。如果有合适自学的Python书,一切就不再是问题。

为了提高编程技巧,你应该每天练习编程。挡在你面前的唯一障碍就是无法坚持,所以我们要采取一些措施确保自己能够坚持不懈。准备一张检查清单,来确保每天都有做练习,而且也能够帮助你保持专注。

十大优秀编程资源 1使用Python在线文档 使用Python的一个主要部分是了解这种语言中有哪些内容可用以及如何扩展它来做其他任务。在线Python文档(写作本书时的版本为3.6.x,当你读到这里时文档版本很可能已经更新了)提供了更多有关Python的参考资料,包括如下主题:

当前Python版本添加的新特征;

完整教程;

完整库参考;

完整语言参考;

如何安装和配置Python;

如何使用Python执行特定任务;

从其他源安装Python模块(作为Python扩展的手段);

发布自己创建的Python模块,供其他人使用;

如何使用C/C++扩展Python,以及嵌入你创建的新特征;

面向C/C++开发者(想使用Python扩展他们的 应用程序 )的完整参考;

FAQ页面。

2使用http://LearnPython.org教程 网上Python学习教程有很多,大都做得很不错,但相比于LearnPython网站上的教程,它们都有一个不足,那就是缺少交互性。在LearnPython网站上学习Python时,你不只是在阅读有关Python的知识,还可以使用网站提供的交互环境亲自动手试一试。

这些教程主要讲解以下主题。

生成器: 返回迭代器的特殊函数。

列表生成式: 一种基于现有列表生成新列表的方法。

可变函数参数: 对第15章“使用带有可变参数列表的方法”内容的补充。

正则表达式: 用于匹配字符模式的通配符设置,比如电话号码。

异常处理: 对第10章内容的扩展。

集合: 这是一种特殊的列表,里面不包含重复元素。

序列化: 讲解如何使用JSON这种数据存储技术。

偏函数: 用于创建派生于较复杂函数的简单函数的专门化版本。比如,你有一个带有两个参数的multiply()函数,那么名为double()的偏函数可能只需要一个参数,这个参数总是要乘以2。

代码审查: 提供检查类、函数、关键字的能力,用于判断用途和功能。

装饰器: 一种对可调用对象进行简单修改的方法。

3使用Python做Web编程

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的应用程序添加字体增强功能)。

python doc: 这个实用程序用来从Python代码中的注释创建文档,其工作原理与JavaDoc类似。

squeeze: 这个实用程序用于将包含在多个文件中的Python程序转换为单文件或双文件的发行版,并能够在Python解释器中正常执行。

tkinter3000: 这个库是Python的标准GUI部件库,包含许多子产品。这些部件本质上是一些代码,用于创建GUI应用程序中的控件,如按钮。tkinter3000库有许多附加组件,例如wckgraph,它帮助你向应用程序添加图形支持。

5使用IDE快速创建应用程序

交互式开发环境(IDE)帮助你使用特定语言创建应用程序。Python本身自带了一个集成开发环境——IDLE,适合用来做代码实验,但用过一段时间之后你就会发现它有不少局限性,例如,IDLE并不提供许多开发人员喜欢的高级调试功能。另外,当你要创建图形应用程序时,IDLE很难帮你做到这一点。

6更容易地检查语法

IDLE提供了某种程度的语法高亮显示功能,这有助于我们查找代码中的错误。比如,如果你输入错误的关键字,IDLE就不会将其颜色更改为系统中定义好的关键字颜色。这样,你就可以立即知道错误出在哪里,以及如何修改它,而不必等到应用程序运行后才发现错误(有时需要经过几个小时的调试才能找到错误)。

Jupyter Notebook也提供了语法高亮显示功能,还有一些标准IDE所不具备的高级错误检查功能。不过,对于某些开发人员来说,它本身可能也有一些不足,比如你必须实际运行单元格才能看到错误信息。有些开发人员更喜欢交互式语法检查方式,在这种检查方式中,IDE会立即标记出代码中的错误,甚至在开发人员离开错误代码行之前,其中错误就已经被标识出来了。

python.vim实用程序提供了增强型的语法突出显示功能,使得在Python脚本中查找错误更加容易。这个实用程序以脚本形式运行,这使得它可以在任何平台上都能快速、高效地使用。此外,你还可以根据需要调整其源代码以满足特定的需求。

7使用XML

学习XML本身是很重要的,你可以在类似W3Schools的教学网站上查找相关教程来学习。有些开发人员在没有掌握XML文件相关知识的情形下就急于着手做各种工作,后来他们发现有些Python资料看不懂,因为这些资料往往会假设读者知道如何编写基本的XML文件。W3Schools这个网站很不错,它把整个学习过程分成若干章节,这样每次你就可以使用一些XML,如下:

XML基础教程;

验证你的XML文件;

XML和JavaScript(JavaScript看上去不重要,但在许多在线应用场景中,JavaScript应用广泛)配合使用;

了解与XML相关的技术;

使用XML高级技术;

使用XML示例使XML更易用。

利用W3Schools学习计算机技术

HTML;

CSS;

JavaScript;

SQL;

JQuery;

PHP;

XML;

http://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编程快速上手 让繁琐工作自动化 第2版

本书没有设计成参考手册,它是初学者指南。编程风格有时候违反最佳实践(例如有些程序使用全局变量),但这是一种折中方式,可以让代码更简单,以便学习。本书的目的是让人们编写用完即抛弃的代码,所以不用花太多时间来关注风格和优雅。复杂的编程概念(如面向对象编程、列表推导和生成器)在本书中也没有出现,因为它们增加了复杂性。编程老手可能会指出,本书中的代码可以修改得更有效率,但本书主要考虑的是用最少的工作量得到能工作的程序。

在本书中,你将学习利用Python编程在几分钟内完成手动需要几小时的工作,无须事先具备编程经验。通过阅读本书,你会学习Python的基本知识,探索Python丰富的模块库,并完成特定的任务(例如,从网站抓取数据,读取PDF和Word文档等)。本书还包括有关输入验证的实现方法,以及自动更新CSV文件的技巧。一旦掌握了编程的基础知识,你就可以毫不费力地创建Python程序,自动化地完成很多繁琐的工作,包括:

在一个文件或多个文件中搜索并保存同类文本;

创建、更新、移动和重命名成百上千个文件和文件夹;

下载搜索结果和处理Web在线内容;

快速地批量化处理电子表格;

拆分、合并PDF文件,以及为其加水印和加密;

向特定人群发送提醒邮件和文本通知;

同时裁剪、调整、编辑成千上万张图片。

本书手把手地教你完成每个程序,并通过每章(除第1、2章外)末尾的实践项目帮你改进这些程序,使你能用所学的新技能来自动化地完成类似的任务。

笨办法学Python 3

这本书的目的是让你起步编程。虽然书名说是用“Hard Way”(笨办法)学习写程序,但其实并非如此。所谓的“笨办法”指的是本书的教学方式,也就是所谓的“指令式”教学。在这个过程中,我会让你完成一系列习题,而你则通过反复练习来学到技能,这些习题也是专为反复练习而设计的。对于一无所知的初学者来说,在能理解更复杂的话题之前,这种教授方式效果是很好的。你可以在各种场合看到这种教授方式,从武术到音乐不一而足,甚至在学习基本的算术和阅读技能时也会看到这种教学方式。

本书通过练习和记忆的方式,指导你逐渐掌握使用Python编程的技能,然后由浅入深,让你将这些技能应用到各种问题上。读完本书之后,你将有能力接触学习复杂的编程主题所需的工具。我喜欢告诉别人:我的这本书能给你一个“编程黑带”。意思就是说,你已经打好了基础,可以真正开始学习编程了。

如果你肯努力,并投入一些时间,掌握了这些技能,你将学会如何编写代码。

本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编写的。

本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。

接下来的路

现在还不能说你是一名程序员。这本书的目的相当于给你一个“编程黑带”认证。你已经了解了足够的编程基础知识,并且有能力阅读别的编程书籍了。读完这本书,你应该已经掌握了一些学习的方法,并且具备了该有的学习态度,这样你在阅读其他Python书籍时也许会更顺利,而且能学到更多东西。

建议你看看下面这些项目,并试着用它们实现一些东西。

《“笨办法”学Ruby》:学的编程语言越多,了解的编程知识也就越多,所以试着学习一下Ruby吧。

The Django Tutorial:试着用Django Web框架创建一个Web应用程序。

SciPy:如果你对科学、数学和工程学感兴趣可以看看。

PyGame:看看能不能写出一个带图形界面和声音的游戏出来。

Pandas:用来做数据操纵和分析。

Natural Language Tool Kit:用来分析文本,以及实现垃圾邮件过滤和自动聊天机器人这样的软件。

TensorFlow:用来做机器学习和可视化。

Requests:学习一下HTTP用户端以及Web知识。

ScraPy:爬取网站内容。

Kivy:创建桌面和移动平台的用户界面。

《“笨办法”学C语言》:等你熟悉Python后试着用我写的其他书学习C和算法。慢慢来,C是一门不同的语言,很值得学习。

选择前面提到的一个项目,通读它的文档和简易教程。在阅读过程中将文档中的代码自己录入一遍,并让它们正常运行。我是通过这样的方法学习的,其实每个程序员都是这么学的。读完教程和文档以后,试着写点儿东西出来。写什么都行,哪怕是别人写过的也可以,只要做出来东西就可以了。

你一开始写的东西可能很差,不过这没有关系。我在初学一种新的编程语言时也是很差的。没有哪个初学者能写出完美的代码来,如果有人告诉你他有这本事,那他只是在厚着脸皮撒谎而已。

怎样学习任何一种编程语言

我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的,下面是我通常遵循的流程。

1.找到关于这种编程语言的书或介绍性读物。

2.通读这本书,把里边的代码都录入一遍并使其运行起来。

3.一边读书一边写代码,同时做好笔记。

4.使用这种编程语言实现一些你用另一种熟悉的编程语言做过的程序组件。

5.阅读别人用这种编程语言编写的代码,试着仿照他们的方式编写代码。

在本书里,我强制要求你慢慢地一点一点地完成了这个过程。别的书不是用这种方法写的,那就需要你把我教你的方法套用在这些书上。最好的办法是先快速过一下书中的内容,将里边的主要代码片段列出来,将这份列表变成一系列基于习题的章节,然后按照次序一一完成。

以上流程对学习新技术也适用,只要你有一本相关的书,就能把它转换成这种练习模式。对于没有书的学习内容来说,你可以使用网上的教程或者源代码作为你的入门资料。

每学一种新的编程语言,你就会成长为一个更好的程序员。你学的编程语言越多,它们就会变得越容易学习。当你学到第三种或者第四种编程语言的时候,你就应该能够在一周内学会一门类似的编程语言了,不过对于一些特别的编程语言来说你可能还是要花较长的时间。你现在学了Python,接下来学习Ruby和JavaScript就应该比较快了。这是因为很多编程语言有着共同的理念,你只要学了其中一种,就能用在别的编程语言上。

关于学习新编程语言的最后一件要记住的事情就是:别当一个“蠢游客”。“蠢游客”就是那种去了一个国家旅游,然后回来抱怨那儿的饭不好吃的人。“为什么这个白痴国家连汉堡都买不到?”当你学习一种新编程语言时,不要假设它的工作方式太蠢,它只是不同而已,只有接受它你才能学会它。

不过,在学完一种编程语言后,不要成为这种编程语言工作方式的奴隶。有时你能看到有人使用一种编程语言做一些很白痴的事情,没有别的理由,只不过是“我以前一直就是这样做的”。如果你喜欢一种风格,而你又知道大家的做法和你不同,如果你看到后者能带来好处,那就毫不犹豫地打破自己的习惯吧。

我个人是很喜欢学习新编程语言的。我把自己当成一个“程序员人类学家”,我认为一种编程语言反映了一群使用它的程序员的一些独到见解。我学习的是他们用计算机互相交流时使用的语言,这对我来说非常有趣。不过话说回来,我这个人还是有点儿古怪的,所以对于新编程语言,你只要想学就学就行了。