你是如何自学 Python 的?

https://www.zhihu.com/question/20702054

 

作者:Crossin
来源:知乎

整理了零基础python入门教程系列,并提供在线写代码的功能:

Crossin的编程教室 - 编程世界的新手村

 

关于自学python,个人最大的3点经验:

  1. 找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。
  2. 去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。
  3. 最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。

所以除了前面说的3点经验,给初学编程者的额外建议:

  • 首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。
  • 选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。
  • 写代码,然后写更多的代码。光看教程,编不出程序。从书上的例程开始写,再写小程序片段,然后写完整的项目。
  • 除了学习编程语言,也兼顾补一点计算机基础,和英语
  • 不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码。
  • 学会查官方文档,用好搜索引擎和开发者社区。

 

推荐几个网上的资源:

(解压密码均为:

在线教程:

 
作者:gashero
来源:知乎

1、Week1:读完《简明Python教程》,适应Python开发环境

2、Week2:写个爬虫,需要深入了解re、urllib2、sqlite3、threading,Queue等几个模块。需要用上多线程抓取,正则表达式分析,并发资源控制,重新开启程序自动继续抓取和分析

3、Week3:学习一种Web开发框架,推荐Flask、webpy之类的,学个数据库接口如sqlite3,写个简单的web应用如博客

4、Week4:给产品做个小功能并走完测试和上线流程,各个时期是不同的


作者:马索萌
链接:https://www.zhihu.com/question/20702054/answer/198005747
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

给希望从事计算机视觉或者机器学习的初学者一些建议,也是我多年使用python的一点心得。

0. 安装anaconda python,然后使用ipython(现在也叫jupyter了),anaconda是一个打包了很多库的发行版,很方便。一个顺手的发行版可以让学习快乐很多。ipython自带的自动补全、文档查询、调试等功能比默认的python解释器人性化很多。anaconda还自带spyder ide,让喜欢ide的同学也能迅速上手。

1. 阅读官方教程,即 里面的tutorials。此教程简洁准确,没有废话。一天之内就能让你抓住这个语言最核心与最常用的东西。这个教程是英文的,但用的英语不难,看教程的同时可以练习英语。目前情况下,计算机方面很多好资料都是英文的,所以学好英语很有帮助。

2. 在目前的deep learning浪潮下挑选一个框架,我个人建议pytorch. 它的优势在于所有代码的写法就像写普通python代码一样,包括自定义layer. 举个例子,当你定义一个新的算子的时候,你可以直接用for写循环语句,并且它的自动微分可以处理,而tensorflow不支持这种写法,所以我认为pytorch更优雅一点

3. 把所有的example跑一遍,修改一些你想要实验的,然后你就入门了

 
作者:柴君
链接:https://www.zhihu.com/question/20702054/answer/262565780
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先python是一门简单的语言,不需要编程基础也能很容易学会;我讲下个人认为对于一个没有任何基础的人,应该如何学习python这门语言。

学习python的过程分为四个阶段:了解python找个例子练手做项目能力提升

了解python

第一步肯定是先了解下什么是python,它能做什么;这个建议找个python入门的书籍看看:

推荐的这两本入门书籍任选一本看就可以了,入门书籍的内容也不需要全部都看,只要了解python一些基础知识:

  • 数据类型:整型、字符串、列表、字典、元组
  • 基础语句:运算符、if语句、for语句、文件操作
  • 函数

找个例子练手

对python有了一定的了解后,就可以去网上找几个例子代码,照着写练练手,我推荐你可以从学习爬虫开始练手,相比其他语言来说python写爬虫是最方便的,可以找些爬虫的书看看,然后到github上找几个例子照着学。

在这个阶段你肯定会遇到非常多问题,这是好事啊,说明你在慢慢的进步;遇到问题你可以通过搜索或者去python社区提问,关于python社区我这里推荐一个:python开发者日常

做项目

这个时候你对python应该有一定的基础了,可以试着做些项目,大部分人会选择做个网站,python做网站常用的框架有三种:tornado、flask、django;对于初学者,我建议在flask和django之间选择:

关于flask、django的项目例子,github上面一堆,可以自己去找吧。

 

能力提升

python是一门简单的语言,加上拥有大量功能丰富的库,容易让人感觉自己什么都会了,但其实他只是会调用库而已;说到能力提升,这个阶段我相信每个人的看法不一样,我就说下我的看法:

  • 看源码
  • 社区交流
  1. 看源码

关于看源码,需要有目的地去看,比如说现在你想了解python网络并发 ,那你可以去看tornado代码里面是怎么实现高并发的;你想学习架构知识,那你可以去研究django的架构哲学,开源社区有很多优秀的项目,它们中的核心代码是设计者的智慧结晶,学习过来对我们极有益处,不断临摹最终形成自己的风格,你的技术能力将得到极大提升。

2. 社区交流

程序学的再好也只是工具,决定价值的还不是最终实现出来的产品,这就要多混社区;技术社区对一个人的影响是多方面的,走出去看看其他人都在做什么,扩展自己的知识面;将业余做的产品和大家分享,互相交流;相信我,这个过程对你的影响绝对不仅限于技术能力,甚至对你将来如果创业会有很大帮助。

国内的技术社区并没有国外那么多,我推荐几个:

最后

在这个快餐文化盛行的年代,很难找到一个集中高质量内容的地方,面对网络内容碎片化,我们要获得知识时,经常是通过搜索最终在各种不同地方才找到想要的内容;所以我做了一个产品:北半球知识社区 算是这个快餐文化下的一股清流,有任何python问题可以在这里交流:python开发者日常

 

 

作者:Manjusaka
链接:https://www.zhihu.com/question/20702054/answer/233073448
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 善用搜索,很多新人最开始的时候,总是下意识的逃避去搜索,总是觉得有人问才是最快的方法。但是就如同上面的 鸟哥语录.jpg 一样,这实际上是选择了最笨拙的方法来学习。搜索引擎真的很强大,而且不需要你有太强的描述问题的能力,基本就是你把你的问题关键词,或者报错信息,往搜索引擎里一放。就可以得到很多高质量的答案。与此同时,你可能会遇到一些相对比较冷门的问题,这个时候,并没有太多人能够路帮助你。比如我之前遇到的一个问题 numpy array 最高只支持 32 维,但是我想支持更大的怎么办?我在这里找到了答案 Using numpy.array with large number of dimensions 通过修改源码解决问题。所以说,善用搜索等于成功了一半。
  • 数据结构&计算机基础,能看到这个答案的,估计都以像我这样的转行党居多。算法,数据结构,计算机基础这些东西是非常重要的,但不是最为重要的。作为一个转行党,首先要保证的是,自己的 API 调用能力以及复制粘贴代码的能力能够达到胜任一份工作的程度(毕竟 API 调用工程师嘛 Hhhhh)。所以我的建议是,最开始的时候这些东西是可以适当放弃不看的,但是保证一些基础的刷题量确保你能通过笔试。然后在你找到一份工作后,这些东西是逃不开地坎,只能硬着头皮肛,当然前提是你想在计算机这行走的很深,很远。
  • 问问题的技术,常年在新手群混,帮助新手,身经百战见的多了。基本各路新人都有一个问题就是,经常莫名其妙的抛出半句话,“大佬们,我这代码怎么这样了啊,为啥啊?”然后一群人一脸懵逼的看着他。正如同企业中有SMART这样的方法论,我觉得问问题也有一定方法论,大概可以这么归纳
  1. 清晰,请清晰准确的描述出你的问题,你想干什么,你写了什么代码,你遇到了什么问题,报错信息是什么?你的环境是什么?你需要我们给你提供怎么样的帮助?
  2. 结果&反馈, 描述完问题后,请告诉对你伸出援手的人确定你想要的结果,同时在解决问题后向提供帮助的人给出一个正向的反馈,比如,你这个问题最后解决没有,是不是用帮忙人解决的,你还有什么补充疑问和建议没有
  3. 礼节,本来不想把这个单列出来说的,我以为这是个文明社会,但是我遇到很多问问题的是大爷,回答问题的是孙子的情况,所以我想强调礼节在问问题中的重要性,请务必用请字提问,请务必在得到答案后说声谢谢(当然红包更好Hhhhh)
  4. 总结:一个好的问问题的方法,不仅是为了帮助你们人节约时间,而是更多的帮你节约时间。
  • 总结&&分享,我经常感受到的一点就是,如果学了新的东西不有一次总结,会遗忘的很快,所以养成了写博客的习惯。记录自己前行的点点滴滴以便于回顾。同时,我们要用于分享,我经常秉承的一个观点就是,一个东西,当你能给人讲清楚,你才是真的学懂了,而且在分享的过程中,你会收获很多东西,朋友,知识点上的缺陷等。所以吧,大胆的分享。
posted on 2017-12-11 17:36  guolongnv  阅读(449)  评论(0)    收藏  举报