簡書不維護(hù)了凰锡,歡迎關(guān)注我的知乎:波羅學(xué)的個(gè)人主頁
最近在乎看到了一個(gè)問題拓轻,嘗試去回答一下虽缕,答著答著感覺變成了如何成為一名python web開發(fā)熊昌。內(nèi)容如下:
地址:https://www.zhihu.com/question/316975464/answer/629473999
畢業(yè)后自學(xué)了很多知識(shí),或許程序員都這樣憨颠。故存了一些胡思亂想胳徽,借你問題寫出來积锅,說的不好請見諒。
---------------------------------------分割線-------------------------------------------
先來閑扯一番
不知道你做的是什么項(xiàng)目养盗。不過這個(gè)是很正常的事情缚陷,做任何事情都是這樣⊥耍可以用我們經(jīng)常聽到的一句話來對比這件事:聽了那么多道理箫爷,依然過不好這一生。
現(xiàn)在你學(xué)的Python基礎(chǔ)知識(shí)聂儒,其實(shí)很類似于我們生活聽的大道理虎锚,偏向于純粹的知識(shí)層面。這些道理沒用嗎薄货?當(dāng)然不是翁都,只是我們要使之有效的與生活結(jié)合需要太多生活閱歷碍论。說實(shí)話谅猾,這是個(gè)很難的命題。同理鳍悠,編程語言與項(xiàng)目結(jié)合也需要我們閱歷税娜。
那么有沒有辦法提前了解它們,完全體驗(yàn)是沒有可能的藏研。但可以通過前人了解敬矩。從能否過好一生這個(gè)問題來說,如果我們能對人的一生各階段的脈絡(luò)都有大致的了解蠢挡,那么我們每到一個(gè)階段就不會(huì)容易迷失方向弧岳。同樣,學(xué)習(xí)編程這件事也是如此业踏,如果有人幫我們指定了學(xué)習(xí)的路線禽炬,也就很難迷失方向。
關(guān)于人生勤家,我覺得最好的一本書是中國的《易經(jīng)》腹尖,通過六十四卦理清了人生的脈絡(luò)。
關(guān)于python伐脖,先貼個(gè)關(guān)于如何學(xué)習(xí)爬蟲的回答热幔,從爬蟲流程角度出發(fā)整理的一套思路:
想學(xué)爬蟲,但是只會(huì)Python的基礎(chǔ)讼庇,有沒有大佬推薦一下書籍耙锞蕖??
閑扯到此結(jié)束
--------------------------------------- 分割線 ------------------------------------------
進(jìn)入正題蠕啄,如何自學(xué)Python场勤?
先要明確目標(biāo)
萬事開頭難,在學(xué)習(xí)之前我們可以花點(diǎn)時(shí)間搞清楚自己為什么學(xué)python。如果沒有想明白這點(diǎn)却嗡,那些基礎(chǔ)語法的學(xué)習(xí)真的沒有啥意思舶沛。即使是學(xué)生的考試必修,為了學(xué)好窗价,最好也通過老師或者一些其他定個(gè)目標(biāo)再開始學(xué)習(xí)如庭。
Python有很多的方向,如web開發(fā)撼港、爬蟲坪它、數(shù)據(jù)分析、自動(dòng)化測試帝牡、運(yùn)維開發(fā)往毡、機(jī)器學(xué)習(xí)。根據(jù)自己的情況靶溜,選擇自己適合或感興趣的方向开瞭。
為防止空談道理而把自己到搞暈了,在開始下面的內(nèi)容前罩息,先選個(gè)方向吧钞楼。爬蟲的思路在上面的鏈接中說了部分屿附,這次就選web開發(fā)吧彰亥。
打牢基礎(chǔ)知識(shí)
選了目標(biāo)方向之后卸伞,基礎(chǔ)就涉及到幾個(gè)部分了。語言層面:無論什么方向娘香,Python基礎(chǔ)語法都要掌握苍狰,且是日后必用的知識(shí),這些在網(wǎng)上也比較容易找到免費(fèi)課程烘绽。具體列舉一下:
- 數(shù)據(jù)類型(整型淋昭、浮點(diǎn)型、虛數(shù)诀姚、字符串)和變量以及與它們相關(guān)的操作(比較响牛、運(yùn)算、賦值赫段、位運(yùn)算呀打、邏輯運(yùn)算等);
- 掌握數(shù)據(jù)結(jié)構(gòu)(列表糯笙、元組贬丛、集合、字典)以及它們的使用方式给涕,是否支持以及如何進(jìn)行增刪改查等操作豺憔;
- 學(xué)習(xí)掌握常見的流程控制語句额获,比如if-else if-else,while恭应、for等抄邀;
- 掌握函數(shù)的使用與定義,函數(shù)參數(shù)等相關(guān)知識(shí)昼榛,可以編寫函數(shù)境肾,實(shí)現(xiàn)代碼復(fù)用;
- 學(xué)習(xí)一些基礎(chǔ)模塊胆屿,比如os提供的文件操作奥喻,輸入輸出方法,日期時(shí)間相關(guān)內(nèi)容非迹;
學(xué)習(xí)到此环鲤,不同方向路線開始慢慢產(chǎn)生分岔,轉(zhuǎn)到特定領(lǐng)域的學(xué)習(xí)憎兽。比如冷离,數(shù)據(jù)分析將會(huì)開始諸如numpy、pandas唇兑、matplotlib酒朵、scipy這些具體的庫的學(xué)習(xí)桦锄。如果遇到一些問題扎附,基本靠百度、google就可以解決结耀;
提醒:經(jīng)常發(fā)生這樣的事情留夜,當(dāng)開始學(xué)習(xí)一門新的編程語言時(shí),我們總想抱一本諸如《Python編程手冊》從頭啃到尾图甜。結(jié)果很快就放棄了碍粥。我認(rèn)為并非是你毅力不好,而是方法不當(dāng)黑毅。書中通常有很多對作者而言不能少而我們并不感興趣而且并不需要知道的知識(shí)嚼摩。
深入編程技能
我們知道web開發(fā)是工程化方向。所以這個(gè)方向的編碼要求會(huì)很高矿瘦,很講究模塊化開發(fā)枕面,甚至設(shè)計(jì)模式也要了解一些。如果公司開發(fā)缚去,通常都有一套基本的代碼規(guī)范潮秘,而且還需要代碼review。
先來說說還需繼續(xù)學(xué)習(xí)一些高級編程技巧吧易结,如下:
- 要了解Python中的模塊枕荞,import到底怎么用柜候,怎么開發(fā)一些新的模塊;
- 了解異常處理機(jī)制躏精,掌握try except的使用方法渣刷,提高的代碼的健壯性;
- 掌握面向?qū)ο蟠V颉㈩惡蛯ο蠓芍鳌槭裁凑fpython所有變量都是對象,深入變量的存儲(chǔ)形式等高诺。
- 掌握網(wǎng)絡(luò)編程碌识,如何使用socket套接字開發(fā)tcp服務(wù);
- 多進(jìn)程多線程怎么寫虱而,可以先熟悉系統(tǒng)提供的包就行了筏餐;
有了這些知識(shí)我們還不能進(jìn)行web開發(fā),但是建議如果這個(gè)過程有毅力牡拇,可以多練習(xí)一些案例魁瞪。以后如果有時(shí)間,我也可以整理一些惠呼,來提高這些枯燥無味階段趣味的練習(xí)导俘。
掌握領(lǐng)域知識(shí)
如果是其他語言轉(zhuǎn)過來的朋友,或許已經(jīng)熟悉web的流程剔蹋。我轉(zhuǎn)學(xué)python時(shí)旅薄,已經(jīng)是一名3年的PHP開發(fā),所以我只需根據(jù)這些流程針對性學(xué)習(xí)python中的相應(yīng)技術(shù)即可泣崩。
其中很重要的就是http協(xié)議少梁,先說說HTTP協(xié)議吧,簡單拆分如下幾部分矫付,不一定全:
- 了解http與tcp協(xié)議之間的關(guān)系凯沪,了解網(wǎng)絡(luò)分層模型的知識(shí);
- 必須掌握http的請求響應(yīng)流程买优,了解一個(gè)網(wǎng)頁請求從發(fā)出到獲取頁面涉及了哪些路徑妨马;
- 熟悉http協(xié)議中的請求和響應(yīng)結(jié)構(gòu),可以做個(gè)練習(xí)杀赢,比如用socket模擬http請求下載網(wǎng)頁烘跺;
- 掌握session和cookie,它們也是http的知識(shí)葵陵,要深入理解掌握的它們的作用和區(qū)別液荸;
- 熟悉http中各種方法,了解它們的區(qū)別以及什么是restful脱篙,掌握POST和GET的區(qū)別娇钱;
尷尬說明:在努力回憶自己學(xué)過的一些知識(shí)伤柄。扯著扯著好像成了老師整理課程大綱了。不過大家都知道文搂,在學(xué)習(xí)的過程适刀,經(jīng)常梳理一下自己曾經(jīng)所學(xué)也是鞏固知識(shí)的一種方式。
需要簡單了解
聊聊前端一些知識(shí)煤蹭,現(xiàn)在web開發(fā)前后端職責(zé)分明笔喉。以前談web開發(fā)不太區(qū)分這些。python主要是在后端硝皂,不過前端的知識(shí)也需要了解一些:
- 熟悉html的使用常挚,起碼要會(huì)寫一些簡單結(jié)構(gòu)的頁面,了解各種標(biāo)簽的作用稽物;
- 了解一些js編程技術(shù)奄毡,起碼會(huì)做簡單的dom操作,可以去學(xué)學(xué)jquery贝或;
- 至于css是否要學(xué)吼过,看自己需求,如果想做些項(xiàng)目且無人合作咪奖,可以了解下盗忱。
擴(kuò)展:雖然現(xiàn)在專業(yè)的前端已經(jīng)越來越工程化,node出來后羊赵,前端發(fā)展很迅猛趟佃,諸如es6、typescript慷垮、vue揖闸、react、webpack料身、babel、postcss等各種技術(shù)五花八門衩茸。但是現(xiàn)在一些項(xiàng)目前端仍會(huì)采用jquery+bootstrap開發(fā)芹血,因?yàn)楹蠖水吘共皇菍I(yè)前端工程師;
聊聊周邊服務(wù)
一個(gè)web系統(tǒng)的運(yùn)行需要依賴很多的周邊服務(wù)楞慈。比如數(shù)據(jù)幔烛、緩存、代理服務(wù)器囊蓝、運(yùn)行系統(tǒng)等
待續(xù)饿悬。。聚霜。