Skip to content

Latest commit

 

History

History
288 lines (155 loc) · 16.2 KB

README.md

File metadata and controls

288 lines (155 loc) · 16.2 KB

PythonShare

Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐

本文 主要 针对 零基础 想学习Python者。本文本文由@史江歌([email protected] QQ:499065469)根据互联网资料收集整理而成,感谢互联网,感谢各位的分享。鸣谢!本文会不断更新。

一、学会使用搜索引擎,尤其是Google。推荐阅读文章

《如何用好Google搜索引擎?》 知乎问答@崔凯

《十大高明的Google搜索技巧》by-雪影蓝风

《如何用好Google》 by-李笑来

二、学会提问

推荐阅读 《提问的智慧》 by-啄木鸟社区

《提问的智慧》 务必请读完!

三、书籍推荐

零基础

  1. Python官方文档 点击打开链接 英语不好的,暂时就先别看了,以后一定肯定要加强英语学习哦;)。

  2. 推荐《How to think like a computer scientist》,对应中文版本《Python学习笔记--皮大庆》,非常适合零基础入门。

  3. 推荐 [《Python编程实践》] (http://book.douban.com/subject/7059900/)

  4. 推荐 《简明Python教程》

  5. 推荐《笨办法学 Python (Learn Python The Hard Way)》

有其他编程语言基础

  1. 推荐《Python基础教程》

  2. 推荐Python入门教程-By廖雪峰

  3. Tutorial - Learn Python in 10 minutes

进阶

  1. 推荐Requests 源码阅读

  2. 《Python进阶》(Intermediate Python 中文版)

更多书籍推荐

  1. 知乎问答关于 Python 的经典入门书籍有哪些?

  2. V2EX问答文科生想学Python

  3. Python快速教程

四、视频推荐

麻省理工公开课《计算机科学及编程导论》,该课程针对零基础者 网易公开课

课程介绍 这门课程适用于那些拥有 很少或没有编程经验 的学生,它致力于使学生理解计算机在解决问题中的作用,并且帮助学生, 不论其专业,使他们对于能够完成有用的小程序的目标充满信心。

五、学习方法

虽然我不是Python高手,但我是零基础,之前会的都是软件PS,PPT之类。

如果目的是想成为程序员,参考教学大纲。

如果只是学程序,理解科技,解决工作问题,我的方式可以参考使用:

  1. 找到合适的入门书籍,大致读一次,循环啊判断啊,常用类啊,搞懂(太难的跳过)

  2. 做些简单习题,字符串比较,读取日期之类 《Python Cookbook》不错(太难太无趣的,再次跳过,保持兴趣是最重要的,不会的以后可以再学)

  3. 加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。 很多小问题,纠结许久,对方一句话点播思路,真的节约你很多时间。耐心指教我的好人,超级超级多谢。

  4. 解决自己电脑问题。 比如下载美剧,零散下载了2,4,5,8集,而美剧共12集,怎样找出漏下的那几集?然后问题分解,1读取全部下载文件名,2提取集的数字,3数字排序和(1--12)对比,找出漏下的。

  5. 时刻记住目的,不是为了当程序员,是为了解决问题。

比如,想偷懒抓网页内容,用urllib不行,用request也不行,才发现抓取内容涉及那么多方面(cookie,header,SSL,url,javascript等等),当然可以听人家劝,回去好好读书,从头读。

或者,不求效率,只求解决,用ie打开网页再另存为行不行?ie已经渲染过全部结果了。

问题变成:1--打开指定的10个网页(一行代码就行)。更复杂的想保存呢?利用已经存在的包,比如PAM30(我的是Python3),直接打开ie,用函数outHTML另存为文本,再用搜索函数(str搜索也行,re正则也行) 找到数据。简单吧?而且代码超级短。

  1. 保持兴趣,用最简单的方式解决问题,什么底层驱动,各种交换,留给大牛去写吧。我们利用已经有的包完成。

  2. 耐心读文档,并且练习快速读文档。拿到新包,找到自己所需要的函数,是需要快速读一次的。这个不难,读函数名,大概能猜到是干嘛的,然后看看返回值,能判断是不是自己需要的。

  3. 写帮助文件和学习笔记,并发布共享。教别人的时候,其实你已经自己再次思考一次了。

我觉得学程序就像学英文,把高频率的词(循环,判断,常用包,常用函数)搞懂,就能拼装成自己想要的软件。

然后,http://stackoverflow.comhttp://Google.com 是很好用的。

然后,坚持下去。

一定要保持兴趣,太复杂的跳过,就像小学数学,小学英语,都是由简入深。

网络很平面,无数国际大牛著作好书,关于Python,算法,电脑,网络,或者程序员思路,或者商业思维(浪潮之巅是本好书)等等,还有国际名校的网络公开课(中英文字幕翻译完毕,观看不是难事),讲计算机,网络,安全,或者安卓系统,什么都有,只要能持续保持兴趣,一点点学习下去,不是难事。

所有天才程序员,都曾是儿童,回到儿童思维来理解和学习。觉得什么有趣,先学,不懂的,先放着,遇到问题再来学,效果更好。

唯一建议是,不要太贪心,耐心学好一门优雅的语言,再学其它。虽然Javascript做特效很炫,或提某问题时,有大牛建议,用Ruby来写更好之类,不要改方向。就像老笑话:“要学习递归,必须首先理解递归。”然后死循环一直下去。坚持学好一门语言,再研究其他。

即使一门语言,跟网络,数据库等等相关的部分,若都能学好,再学其他语言,是很快的事情。

另外就是,用学英文的耐心来学计算机,英文遇到不懂的词,抄下,查询。

python里,看到Http,查查定义,看到outHtml,查查定义,跟初学英语时候一样,不要直接猜意思,因为精确描述性定义,跟含糊自然语有区别的。而新人瞎猜,很容易错误理解,wiki,google很有用。

芝麻问答:如何学习Python 点击打开链接作者:@halida

如何学习python

我们假设你是一个初级程序员, 只懂得一点点的基础知识, 希望能够用python来做开发. 这篇文档就是为了满足以上目标而写的.

大纲

按照这篇文档所指示的任务过一遍, 你就能够做到:

熟悉python语言, 以及学会python的编码方式. 熟悉python库, 遇到开发任务的时候知道如何去找对应的模块. 知道如何查找和获取第三方的python库, 以应付开发任务. 学习步骤

安装开发环境

如果你在window下, 去下载pythonxy安装起来, 然后运行python, 进入python解释环境.

如果你在ubuntu下, 执行: sudo apt-get install python, 然后在命令行下运行python, 进入python解释环境.

学习方法

作为一名成熟的开发人员, 我学习新东西(假设是pyqt)的习惯方式是:

直接用google搜索pyqt的官方网站. 按照官方网站的说明, 下载pyqt. (如果是用ubuntu, 看看软件库里面是否有足够新的版本) 下载过程中, 开始阅读官方网站上面的教程. 一边看教程, 一遍按照教程使用pyqt. 如果发现教程不够全面, 用google搜索是否有对应的教学书籍可以看. 示例学习完毕, 开发一个玩具程序, 用来检验自己是否需要用到的功能. 开始学习python

我建议你学习的过程也按照上面来, 首先过一遍python官方文档:

http://docs.python.org/tutorial/index.html

然后做 http://www.pythonchallenge.com/ 这个网站上面的题目.

如果卡在某一关太久, 可以看答案(google python challenge answer), 做完后看看别人的编码方式和自己有什么区别.

小项目

做完一遍后, 你会发现已经熟悉了基本的python开发. 然后做点小项目吧. 这里是一些题目, 挑感兴趣的去做.

  • 写一个简单的计算器/记账软件/扫雷游戏(用pyqt库做界面)
  • 写一个聊天室网站(用webpy框架, jquery刷新新的回复)
  • 写一个爬虫, 获取douban上面所有用户的地点, 画地点分布的直方图(用lxml解析, 保存数据到sqlite里面去, 用matplotlib画图)

FAQ

Q: 遇到了问题, 到哪里求助?

A: 上 http://groups.google.com/group/python-cn (需要翻墙) 或者 http://stackoverflow.com 提问就可以了.

Q: 如何查找python的某个功能?

A: 看官方文档. http://docs.python.org/library/index.html

Q: 如何用python完成一个任务(比如写网站)?

A: google: python 写网站, 或者 google: python web development.

知乎问答:你是如何自学 Python 的?点击打开链接 作者:@成增存

阶段一:前辈领进门。 第一眼是一个前辈给我看了看Python的代码,因为自己最早学习的是Java语言,第一眼看到Python的时候,前辈说,“Python是面向对象的”,然后就 打印了几句代码。可我怎么也看不出到底哪里是“面向对象”的。前辈说“在Python里,一切皆对象”,我才有点领悟的说道:“原来把什么看成对象,就是面向对象”,哈哈。

阶段二:开始看的是《Dive into Python》、《Leaning python》、《Python Doc》。 因为有很多语言学习经历,很快就完成了初步语法和使用学习。太复杂的特性还是在使用中逐步掌握的。

阶段三:开始使用Python做自己的一些日常工作。 比如Python搜索文件,Python批量处理等,使用最多的还是re模块和socket相关模块。写了大量的例子,让自己对Python更加喜爱,也更加熟悉。此时翻阅最多的是《Python Doc》的指南。不管是语言参考、库参考、Demo参考,都有大量可使用的内容,内容质量很高堪比JDK。

阶段四:生产上马。 开始使用Django,Flask,Tornado开发一些web应用,写一些日常使用的工具包等。逐步提升设计能力,和整体代码的管理能力。

阶段五:更合理的分配好C,Java,Python三门语言各自擅长的部分。 把合适的语言用到合适的地方。尽管一门语言有时候可以搞定所有的,但用擅长的语言解决合适的问题才是效率最高的。这也是“Python的大道至简”的理念带给我的帮助和认识。

PS:其中过程中主要的一些 方法 :

  1. 看书。学习的基础。

  2. 自己本地练习。编程还是要实践出真知。

  3. 资料查询。google,stackoverflow等多关注。

  4. 交流。各种论坛上的python group,论坛。最早去的CU,JavaEye,不过现在貌似去的少了。google group 必须订阅。

    学习+实践+总结,掌握语言的法宝。

六、Just Do It

看了这么多资料了,还没动手敲代码?

好吧,最好一篇文章《我在学习编程中犯的两个 最大错误点击打开链接

Just do it 。动手敲代码吧。

注:本文由@史江歌([email protected])根据互联网资料收集整理而成。

七、更新

Python技术博客、招聘、开源软件、Python中文网站导航

遇到python问题怎么样解决?python help dir stackoverflow docs google

在线视频教学(英文)codecademy

英文Python for beginners

英文How do I learn Python from zero to web development?(各种电子书推荐)点击打开链接

Python应用与实践 Python是什么?谁在用它?相关工具?作者:@吴秦

Python模块学习 相当于翻译官网文档

针对有其他语言经验的人,英文:Learn X in Y minutes 中文翻译Y分钟学会Python(译)

PyCoder’s Weekly 中文翻译 说明:文章质量很高

PEP 20 (Python之禅) 的实例 说明:code_stype

Unicode之痛 必读

有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解 必读

stackoverflow上Python相关回答整理翻译

Python语言总结-初级中级高级教程 作者:@Crifan Li

Python Guide Python 最佳实践(英文)

Python 最佳实践指南(中文) 关于Python安装、配置、和日常使用的最佳实践手册。

Python 最佳实践指南 2018 Python 日常使用的最佳实践,高级 Python 开发者必知必会的知识

《码农周刊》干货精选(Python 篇) 精选总结

Python 3 Module of the Week Python 标准库的使用

Python - 100天从新手到大师 100天从新手到大师

Python 和 Diango 学习资料,书籍,文章,以及实战项目

八、爬虫以及模拟登陆新浪微博

知乎:Python 爬虫如何入门学习

Python爬虫学习系列教程 @崔庆才系列教程,入门、实战、爬虫利器介绍、进阶

Python模拟登录新浪微薄(使用RSA加密方式和Cookies文件)

http://uliweb.clkg.org/tutorial/view_chapter/240

一个简单的分布式新浪微博爬虫

用python爬虫抓站的一些技巧总结

使用python爬虫抓站的一些技巧总结:进阶篇

网络爬虫系列

九、工具

Windows系统下,Python相关包Windows Binaries for Python Extension Packages