你們都是怎么學(xué)Python的?
自學(xué)Python一個(gè)月,怎么學(xué)都學(xué)不進(jìn)去,感覺自己方法錯(cuò)了,現(xiàn)在連入門都不算,我該怎么辦啊?這應(yīng)該是每一個(gè)零基礎(chǔ)學(xué)Python的小白都會面臨的問題,今天我就結(jié)合自己的經(jīng)歷,和大家分享一下我是怎么學(xué)Python的?
我在網(wǎng)上常??吹较胍D(zhuǎn)行IT,或者想學(xué)習(xí)編程但不知如何開始的朋友,回答這類問題的人往往只是列出書單資源,然后給出一個(gè)大致的方向。
一些小白朋友就開始扎入理論學(xué)習(xí)的汪洋大海,從苦讀類似「算法導(dǎo)論」開始,能夠堅(jiān)持讀下來的寥寥無幾,學(xué)習(xí)的積極性也被不斷的挫敗感消磨殆盡。
萬物皆有道法可尋,學(xué)習(xí)編程這件事也不例外。我們是需要借助書籍、借助學(xué)習(xí)資源進(jìn)行學(xué)習(xí),但首先我們得有一個(gè)清晰的學(xué)習(xí)路線。
學(xué)習(xí)Python的過程,大致可分為入門、進(jìn)階、精通。每一個(gè)階段的學(xué)習(xí)要求又不盡相同,所以,我們應(yīng)該給自己建立一條學(xué)習(xí)路線。
1.入門
所謂基礎(chǔ)不牢,地動山搖。不管你以前有沒有編程基礎(chǔ),都需要掌握Python的基礎(chǔ)知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法等,我當(dāng)時(shí)入門看的書有:
- A Byte of Python
- Python編程從入門到實(shí)戰(zhàn)
- 笨辦法學(xué)Python
- 父與子的編程之旅
上面這些書都是豆瓣評分很高的Python學(xué)習(xí)工具書,有的書中有實(shí)例、有代碼,我當(dāng)時(shí)看的時(shí)候,把每一個(gè)例子的代碼都打了一遍,加深記憶,也學(xué)習(xí)了Python的語法規(guī)則,所以,我建議大家自學(xué)的時(shí)候也這樣做,很多代碼你看一百遍,不如手打一遍,然后在運(yùn)行一次,有的可能因?yàn)榘姹镜脑驎鲥e(cuò),但這也是個(gè)學(xué)習(xí)的過程。
當(dāng)然,有的小伙伴自學(xué)的時(shí)候,習(xí)慣看視頻,網(wǎng)上也有很多資源,最有名的當(dāng)屬廖雪峰的Python教程,還有小甲魚的Python自學(xué)視頻等等,風(fēng)格各不相同,學(xué)到知識就行,大家在看視頻、看書的時(shí)候,最好邊看邊做筆記。
當(dāng)你學(xué)習(xí)完基礎(chǔ)語法后,你需要通過做一些簡單的項(xiàng)目來鞏固和檢測自己所學(xué)的知識。只有當(dāng)我們要去做項(xiàng)目的時(shí)候,才會真正調(diào)動自己的思維,通過各種辦法實(shí)現(xiàn)自己的想法。
這里給大家推薦一些適合基礎(chǔ)鞏固與運(yùn)用的項(xiàng)目。
- https://www.shiyanlou.com/courses/364
- https://www.shiyanlou.com/courses/370
- https://www.shiyanlou.com/courses/589
- https://www.shiyanlou.com/courses/651
- https://www.shiyanlou.com/courses/368
- https://www.shiyanlou.com/courses/70
- https://www.shiyanlou.com/courses/561
- https://www.shiyanlou.com/courses/583
- https://www.shiyanlou.com/courses/756
- https://www.shiyanlou.com/courses/684
2.進(jìn)階
學(xué)習(xí)完基礎(chǔ)知識之后,我們可以根據(jù)自己的興趣愛好,或者職業(yè)發(fā)展,給自己定一個(gè)Python的使用方向,目前,Python被使用最多的是:
(1)搭建個(gè)人博客、網(wǎng)站(進(jìn)一步學(xué)習(xí)Flask、Django);
(2)數(shù)據(jù)爬蟲(進(jìn)一步學(xué)習(xí)Requests、Scrapy);
(3)數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等(進(jìn)一步學(xué)習(xí)Numpy、Pandas、Scikit-learn等);
(4)通過豐富的第三方庫實(shí)現(xiàn)各種各樣的小想法。
目前,我選擇的就是數(shù)據(jù)爬蟲,因?yàn)榫C合自身情況,本科也沒學(xué)過編程知識,數(shù)學(xué)也不是很好,那么做數(shù)據(jù)爬蟲項(xiàng)目也是很好的鞏固Python基礎(chǔ)知識的方法。
一是數(shù)據(jù)爬蟲項(xiàng)目不需要很長的代碼,基本上100行以內(nèi)就可以實(shí)現(xiàn)項(xiàng)目需求;二是富有邏輯性,可以鍛煉代碼思維;三是會涉及到HTML、數(shù)據(jù)庫、代碼性能等問題,這些知識點(diǎn)可以說是程序員必須學(xué)習(xí)的知識點(diǎn),可以進(jìn)一步提供觸類旁通的能力。
數(shù)據(jù)分析、挖掘就不用多說,幾乎是現(xiàn)在Python最火的方向了。進(jìn)階階段每個(gè)人的方向不同,所用的書也不一樣,這里就不做推薦。
3.精通
這個(gè)應(yīng)該是每一個(gè)自學(xué)Python人的目標(biāo),每個(gè)人心中都要有一個(gè)大師夢。關(guān)于這個(gè)階段,我給大家推薦一個(gè)github上的項(xiàng)目,有位名叫駱昊(jackfrued)的資深程序員,為大家規(guī)劃了一條“從新手到大師”的百天之路。
目前這個(gè)項(xiàng)目以及在GitHub摘下65400星,駱先生還在日程表上方,溫柔地鼓勵(lì)大家:Python是一個(gè)“優(yōu)雅”、“明確”、“簡單”的編程語言。學(xué)習(xí)曲線低,非專業(yè)人士也能上手。項(xiàng)目傳送門:https://github.com/jackfrued/Python-100-Days
最后,和大家分享幾個(gè)自學(xué)Python的好方式。
(1)一定要抽空補(bǔ)充理論知識。很多前輩會強(qiáng)調(diào)learn by doing,邊做項(xiàng)目邊學(xué)習(xí),當(dāng)然這也是我采用的方式。在這種方式下,你不斷犯錯(cuò),改正……學(xué)習(xí)效率非常高。但是,很多人走了極端,最后的結(jié)果就是不注意理論知識的學(xué)習(xí),你會發(fā)現(xiàn)自己Google的能力越來越高,但真實(shí)的編程能力并沒有得到提升,如果你有這種情況,需要反思一下了。
(2)學(xué)會發(fā)問。好問題是建立在你自己已經(jīng)實(shí)踐或者思考的基礎(chǔ)上問出來的,需要注意的是不要一遇到困難就喜歡直接上網(wǎng)搜索:「這個(gè)問題怎么回事啊?」、「我不明白你能不能幫我看看?」……
(3)善用搜索引擎獲得自己想要的答案。這里說的搜索引擎不是某度,是Google,而且要學(xué)會如何使用英文發(fā)問,如果有報(bào)錯(cuò)信息,可以把報(bào)錯(cuò)直接copy進(jìn)搜索框。新手所遇到的問題,99%都可以在Stack Overflow上找到各種答案和實(shí)現(xiàn)方式。
(4)學(xué)會看報(bào)錯(cuò)信息。一開始學(xué)習(xí)的時(shí)候,往往會忽視這一點(diǎn),但實(shí)際上報(bào)錯(cuò)信息給出了很多指向性的答案,所以,我們不能一昧的依賴搜索。
(5)學(xué)好英語。當(dāng)我們真正使用Python的時(shí)候,官方文檔才是很好的查閱和進(jìn)一步學(xué)習(xí)的資料,想要成為Python大神,就得多看官方文檔,優(yōu)秀的Python程序員,幾乎每年都會去學(xué)習(xí)一遍官方文檔。
總結(jié)
希望大家看完我的分享后,能幫助你修正自學(xué)Python的方法,然后按照自己的節(jié)奏,日拱一卒,循序漸進(jìn)。也歡迎大家后臺和我交流,你們是怎么學(xué)習(xí)Python的?