这个问题我想回答一下,分享一下我自己的经验和看法。我是一直反对类似高票答案这样,以及一些长长的「新手指南」里讲的,让一个初学者用尽Python这把「瑞士军刀」把所有可以依赖Python实现的方方面面都来上一遍的。我的理由很简单,懂Python的基础语法,和了解外部包并得以应用是两个事情,而了解各个方面的包对于初学者来说,耗时费力,事倍功半。我认为正确和理性的学习方法还是有所目标,也就是究竟想学会Python来做什么。比如你想用来做个网站,那学完Python基础语法后就应该研究研究Flask,那些爬虫、数据分析、数学模型等可以放一放,等到主线的学习任务要用到其他方面的工具时,可以回过头来再学。相应的,如果你学习Python就是用来做数据工作的,那么一些Web框架和搭建网站的小练习应该先放弃不学。我很喜欢Python,一开始学习时也是看了一些书和很多教程,类似高票答案一样,会让你接触到GUI、爬虫、数学、WEB等一系列Python可用的方面,各式各样依赖不同包的小练习搞得我手足无措,挫败感很强,我大致回想了一下,大概能做出来里面练习题的三成不到,剩下的七成完全下不了手。好在我本身学习Python还是目的性很强的,就是为了搞网站,不为别的。所以在我基本了解Python的语法后,开始读Flask的相关文档,并动手做网站。这之中会遇到各种问题,然而有赖于我一直就把全部的精力学习这一个方面,所以比分散精力去研究各种不同的包更容易获得一小步一小步的成功,每一小步的成功,解决一个小问题,我很有成就感,进而有足够的动力继续前进,最终,因为我总是在一条路上前进,因而我能走的更远。所以,我对题主的建议就是,我相信你有足够的能力学习好Python的基本语法知识,之后你所要做的,就是选择Python应用的一个方面,在这一个方面不断的学习、研究和动手做更多的事情。相应的,放弃Python在无关你所选择的方面的那些应用,暂时远离其他方面的练习。
其实这压根不是学Python的问题,而是学计算机的问题,不光学Python会遇到,学任何语言都会遇到这样的问题。我一直觉得,编程在某种程度上和写作无比类似。编程语言的意义和纸笔类似,是写东西的必要条件,但不充分。学会了编程语言,不过是有了在用笔在纸上写字的能力,离能写出好的文章差的可远着呐。那么,怎么才能提高写出东西的能力?这个和写作一样,首先你得有写的动力,其次是要学习如何去写,最后才是多写。动力是最重要的。不管是因为兴趣爱好还是因为生活所迫,你都需要给自己一个努力的理由。除了敦促你努力,带来动力的源泉往往会直接或间接的指明你的努力方向,这对后续发展有很大帮助。如果你的动力是应聘好公司拿高薪,那么目标公司的职位要求就是你的方向;如果你想写出有趣的网站,那么web相关就是你的方向;如果你对编程语言本身感到着迷,那么编程语言理论或编译器就是你的方向。这样,你就不会迷茫,今天写个爬虫,明天写个贪吃蛇,可过了好久发现自己还在原地踏步。接下来是学习如何去写。说白了就是学,使劲学,把你希望的方向里能学会的全学会。先爬上巨人的肩膀才有可能垫高巨人的肩膀。最后才是多写。什么也不学的瞎写是毫无意义的。在没有学会许多东西之前一味强调多写是十分愚蠢的事情。当你学了一些东西时,写的时机才到了。这时去放手实践你学到的东西吧。之后的路就相对清晰了。一直学下去,写下去,就这么简单。我想,对大部分人来说,最难的就是找到动力源泉了。可惜,我也没有通用的方法帮你找到它。对于此,似乎只能看运气咯。
能理解题主的困惑,也写给曾经有过相似困惑的初学者。我认为主要原因有这几个:1. 学习动机不明你学习Python最初的目的是什么?总不能是为了应聘、为了考试、为了炫耀吧?我一直认为学习一样东西,一定是需求驱动的。因为我想实现某个东西,而去学习了某项技术。而不是因为我会了某样技能,我再去想想它还能做些什么。拿自己举例子,我决定学习Python的时候是为了用它写爬虫。因为听说Python写起来比java便捷很多。由于这个兴趣的驱动,去学习python的网络库的使用。一开始用自带的urllib,后来发现用起来麻烦,就想自己封装一个使用简单的库。后来发现总是用split分割字符串已经不能满足对网页元素提取的需求,去简单了解了正则表达式,去学习了HTMLParser……爬虫爬下来的数据要存起来啊,有没有方便的存取数据库的框架?然后学习了SQLAlchemy。爬下来的数据光我自己看还不够酷炫,我想做个网站,就去学习了django……你看看为了实现我自己提出的需求,我每一个加粗的字体标出来的都能单独写一个开源项目了,如果对任何一个感兴趣都可以去深究下去。所以说并不是你写不出来,而是没有找到自己感兴趣的“需求”去驱动自己朝着这个方向钻研下去。2. 知识面不够宽解决一项需求不止要掌握一门语言就可以。就比如题主说目录遍历都写不出来。如果你去搜索引擎搜索:“Python 目录遍历方法”我不相信搜不出来关于“递归”、“深搜”、“宽搜”等等的关键词,如果你连这些都不懂,就得去学习学习相关的算法了。觉得某一个需求很难实现,往往不是因为组合不出技术路线,而是你还不了解这条技术路线上的技术点。有些技术点,比如写目录遍历要用到python 的os库里的函数,并不需要你会用所有关于路径、文件操作的所有的函数怎么用。你只需要看着函数的简要说明,知道它们分别能干什么、我可能需要用到哪一个就够了。同样,也不需要把整本算法书啃一遍,每种都会写,只了解它们各自特点,我目前需要掌握哪一个,就够了。以后用到的时候,能想到,再具体去看。一年前我在知乎提了一个问题——如何写一个网页刷票器之类的东西? - 陈裕皓的回答,半年前自问自答了一下。现在想想当初的提问,就是因为了解的太少。想做一个刷票器,连HTTP请求都不知道,却问用什么语言实现,这不是很可笑吗?3. 思维方式有人说,我自认为自己需求很明确,掌握的知识点够宽,还是想不出技术路线怎么办?最初人类梦想飞上天空,用了风筝、火箭筒、巨型鸟翅膀,虽然最后都失败了,但最起码能飞行几秒钟到几分钟吧。有些问题,想不到简洁而有效的办法,但我不相信花两三天时间,苦思冥想,画画思维导图,写写思路,还写不出一个笨拙但可以解决问题的代码。我也不相信你再花一周时间闭门造车地自己试着优化,不能把这堆烂代码做些许优化。更加不相信一周之后,你和大神讨论、在网上搜索更好的方式、阅读别人的源码,还没有豁然开朗的收获。人类能够把一些看似不相关,实则充满内在联系的事物结合在一起,碰撞出火花,这就是创造力。这种能力也是需要锻炼的,也是从量变到质变的过程。很多人说,“要多读别人的代码”、“多写项目”、“一开始只是借鉴,慢慢就懂了”、“一开始只会用轮子,后来就会造轮子”,说的是没错,但他们没说自己独立思考的过程。从独立思考,到参考借鉴,到自己创造。---------------------------------------------------------------------------------------------------------------以上都是些抽象的,来点实际的,讲讲我的Python学习之路:1. 看到 @廖雪峰 大神回答这个问题了,表达一下崇拜之情。我就是看着廖老师的Python教程入门的Home - 廖雪峰的官方网站。至今还没全部看完,因为浅浅的入门容易,想真正掌握Python的很多高级用法还是很不容易的。建议题主先了解Python的历史,看看目录,知道Python都能做啥,挑自己感兴趣的多了解了解。最底下的实战就是练手的了,跟着边想边做。2. 如果你对爬虫比较感兴趣,可以试着爬一爬廖老师的网站啊,把它们爬下来存到本地,然后就能在手机上不费流量地看了,想想是不是感觉很爽?那就把它作为自己的第一个Python项目吧。实在不会写了,可以看看我当时写的cyhhao/PythonCrawler1 · GitHub,只有50行。3. 用Python爬Python教程在本地看,还不爽,要放到kindle上看才爽嘛,找了找HTML转epub的工具,都不好用,有的转完不带图片的。算了自己研究一下epub文件格式的规则,自己用Python写一个好了cyhhao/html2epub · GitHub。4. 爬网站爬得好慢啊,有没有什么可以改进?哦,对了想起来廖雪峰教程里有说到“线程”和“进程”对于I/O密集型操作要有利很多。我来看看学习学习怎么开线程、开进程。5. ……N. 学海无涯啊,只想把Python当计算器用够么?只会Python基本用法够么?只能借鉴别人创造力的果实够么?说了这么多,总结起来就是:明确需求和动机,拓宽知识面,锻炼思维方式。
最后:
自己多问下为什么学python
如果一门语言没有改变你的编程思维,那么它不值得你去学习”。如果这么说,我们大学的时候,学习了c,c++,java,C#,算是值得学习么?很多时候是不值得,我觉得我们大学的课程就是用java,c#,c++把"C程序设计"又上了一遍.
这是因为,学校的老师会C和java之类的,所以要跟着规矩开这门课,(这也就是为什么,许多学校还在教vb,),这也就是为什么,你所以为的一样就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所谓的不一样就是用C有指针,java没有,这就是为什么教育是失败的,这也就是为什么,我目前认识的几个编程大牛
python的优点:简单 我所说的简单,是相比于象C和C++这样的语言,你为了编程,要学习许多偏底层的东西.在比如,你在学习一个新的编程范式,或者想要马上做个例子看看,试验某个API,如果你是写java的,你不得不去写一个main,写一些构造,即使有IDE这样的东西,能够为你带来代码生成器,而我做得就是写一段“脚本”,或者打开python交互式解释器就行了。
自己认识的python朋友出去工作,工资比较高,然后自己又刚刚好是会python所以选择学习python,这样的人比较危险但是也比较有激励,还有就是觉得python比其他开发语言好用。
学完python前景会咋样
其实我个人是很看好python未来的就业前景的,因为我认识太多的工程师都已经在学python,很多都是月收入大几万的
我个人也并非一直用python。前些年主要用c/c++以及java开发一些通信,移动系统,互联网通信。近3年开始才转向python。坦白的说,这可能与你相处的公司以及环境不大一样。随便举个例子,google的protocol buffer协议一出来就具有c++/python/java三种语言支持。google的广告系统早在03,04年左右就一并对python进行了webservice支持,大部分涉及基础核心系统的公司,都开始对python进行了扩展支持。甚至开源社区的postgresql数据库,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外对python进行了内嵌支持,唯独却没有呼声很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,对java可能排斥性比较大,但综合而言,目前python发展还没有java那种普及,主要是python大部分工作仍然是在较为深入地系统层和框架层做设计开发,例如django,SQLAlchemy,fail2ban,mail邮件系统,twisted等等。这部分对于那种习惯应用前辈们框架的编码人员而言,缺乏创造力的他们根本无法适用这种开发。尤其在python涉及一些系统层面需要有较强的c/c++能力,这部分人在国内要么就累得要死没时间,要么就啥都不会就会拷贝代码,而国内公司也鲜有主动去做这部分基础劳动的,大多都是等别人做好了在直接拿来用,所以造就了任何技术性的东西出来,国内都是先等等看,然后抄袭应用。
大环境如此,但千万误认为先等等看吧。对于一个技术人员而言,缺乏对新技术的渴望与热情,这是一种非常危险的事情。我工作8年了,按照国内很多的人的说法早已不做代码了,但又一次在听一个老外的演讲,他说他50多岁仍然每天坚持写代码,了解最新的动态,所以他才能做到他们公司的首席科学家,因此它才能时刻指导项目团队前进并保证项目的质量。他坦言对于一个不写代码并且不了解最新的技术动态的技术人员或者技术团队的负责人而言,这种团队也就足够做作小项目,一旦压力和项目过大,就会有很多问题漏出来。
对于新人而言,无论学习什么技术,都要以鼓励的姿态出现。太多用薪水和你个人所看到的现状去衡量一门技术,那绝对是欠缺眼光的。任何一门技术,一旦有人学习,他有可能逐渐成为这个领域的专家,即便再滥再没有人用的开发语言技术,他也有可能就是明日的奠基者或者大师。
自己如何确定目标
在生活中学会不断挖掘自己的潜力。我们都是一个普通人,可能并不清楚自己到底在哪方面占有优势。所以,学着在生活中找到自己的优势,并根据优势选择一定的就业方向。
不随波逐流。不要看周围的人做什么,自己就做什么,也许别人做的并不适合你。别人的优势很可能会成为你的劣势。所以,坚定自己的想法,让自己知道那些方面适合自己,自己可以胜任。
不断尝试可能成为自己的优势。你不知道什么适合自己,所以才要大胆、勇敢地尝试。找到一种可以属于你的独特的优势。
坚定信念。一旦你坚定了自己的信念,就不要被别人的意见或是讽刺或是嘲笑所干扰。别人不是你,不懂的你在想什么,不清楚你开始这件事的源头。你的事情,不了解你的人,没有资格轻易评说。
不茫然,不多想。别让太多的事干扰到你奋斗下去的信念。梦想不容许太多的杂念。那些杂念只会让你的心愈来愈脆弱,多为一个人考虑,到头来,伤害的还是自己。
选择自己学习方法
每个人都有适合自己的方法,有的人去选择自学,有的人选择看视频学习,有的人选择报名培训班,那在这个时候,你就要自己考虑清楚,到底那样对的帮助是最大的,个人觉得是跟着培训班最好的,毕竟人家的实战项目多,我们学软件开发的都知道实战项目对于学好一门语言是 很重要的。
学习python有那些误区
具体里面的误区非常的多,那些就不需要我去写出来,我给你说的一般都是心态的问题,首先一个觉得自己会java和c++,然后我学习python就很牛,但是你要知道语言是有很多相同的地方,但是不是通用,一定要自己学习的仔细。还有一种就是觉得我不会英语,我要先去把英语学习好在来学python。因为自己想还坏主意然后学习,这样的都是容易找进误区的。在生活中学会不断挖掘自己的潜力。我们都是一个普通人,可能并不清楚自己到底在哪方面占有优势。所以,学着在生活中找到自己的优势,并根据优势选择一定的就业方向。
不随波逐流。不要看周围的人做什么,自己就做什么,也许别人做的并不适合你。别人的优势很可能会成为你的劣势。所以,坚定自己的想法,让自己知道那些方面适合自己,自己可以胜任。
不断尝试可能成为自己的优势。你不知道什么适合自己,所以才要大胆、勇敢地尝试。找到一种可以属于你的独特的优势。
坚定信念。一旦你坚定了自己的信念,就不要被别人的意见或是讽刺或是嘲笑所干扰。别人不是你,不懂的你在想什么,不清楚你开始这件事的源头。你的事情,不了解你的人,没有资格轻易评说。
不茫然,不多想。别让太多的事干扰到你奋斗下去的信念。梦想不容许太多的杂念。那些杂念只会让你的心愈来愈脆弱,多为一个人考虑,到头来,伤害的还是自己。
怎么样才能学好python
学好python你需要一个良好的环境,一个优质的开发交流群,群里都是那种相互帮助的人才是可以的,我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是304050799,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。