人生幾何,何不Python當歌

學習Python也有一段時間了,學到了很多,從什么也不懂到入門,現(xiàn)在談?wù)刾ython怎么入門。

注意:本文沒什么邏輯,純屬個人對學習歷程的回顧。


說實話,這個話題,如果由一個在python領(lǐng)域工作多年對項目對語言都有自己的獨特的理解,結(jié)果會更有信服力。而我可能并不適合來回答這個問題,理由如下:

  • 首先我的學習周期很短,
  • 其次我在學習python語言之前并沒有強大的邏輯運算能力。
  • 第三其實講真之前對于python我是不怎么了解的,只是看了知乎和blog感覺用Python爬蟲挺好玩,才決定學python的。

但是從另一個角度思考,我又覺得我很有資格來回答這個問題,理由如下:

作為一個python領(lǐng)域的編程小白(真的是小白啊),我更懂和我一樣編程零基礎(chǔ)(上課貪玩,大學學的其它編程課都還給大學老師了)、邏輯又不好的初學者在初次接觸python語言之時,內(nèi)心的困惑和掙扎(其實python相對來說比較簡單了);按照我的學習周期及其效果來看,我的學習效果得到了自己對自己的檢驗;

我的python學習是在大學期間就開始的,而非是在職場的強壓下被逼無奈之下開始的,所以不帶很多的功利性和企圖速成的快節(jié)奏,同樣也是按需去學,所以對于基礎(chǔ)的把握及學習的節(jié)奏的經(jīng)驗對我個人還是蠻有幫助的。

關(guān)于學習初衷:

首先我想說的是,在打算學習python之前一定要先問自己一句,你學習python的目的是什么?

是為了應(yīng)對職場壓力,被動充電?亦或者僅僅一時心血來潮,看到如今的大數(shù)據(jù)或者人工智能發(fā)展的如火如荼、不由自主的來湊一波熱鬧?或者是純粹只是為了興趣、實現(xiàn)自己的某些想法,比如時不時爬個妹子圖....等等。

因為目標定位不同,意味著你能為此打算花費的時間長度不同、付出的心血不同、學習的路徑不同、學習的模塊不同,達到的效果也不同。

一定要確定好目標,按需去學,否則你在入門之前就首先會陷入迷茫和困惑,因為python除了內(nèi)置的幾個包之外,可用的有不下上萬個包,如果再算上GitHub上 托管的個人開發(fā)的小眾包,可能有好幾萬了,掰著指頭數(shù)一數(shù),夠?qū)W一輩子了。

關(guān)于學習過程:

第一階段:Pythoy環(huán)境搭建與配置、數(shù)據(jù)類型與變量、運算符與表達式、字符串、列表與字典、函數(shù)、面向?qū)ο缶幊膛c模塊

Python面向?qū)ο缶幊?/a>從零開始-從沒對象到有對象。此對象非彼對象,我們可以從面向過程和面向?qū)ο髞韺W習面向?qū)ο蟆?/strong>

  1. 面向過程:根據(jù)業(yè)務(wù)邏輯從上到下寫代碼。面向?qū)ο螅簩?shù)據(jù)與函數(shù)綁定到一起,進行封裝,這樣能夠更快速的開發(fā)程序,減少了重復代碼的重寫過程。

  2. 面向?qū)ο?object-oriented ;簡稱: OO) 至今還沒有統(tǒng)一的概念 定義是:按人們認識客觀世界的系統(tǒng)思維方式,采用基于對象(實體) 的概念建立模型,模擬客觀世界分析、設(shè) 計、實現(xiàn)軟件的辦法。

  3. 面向?qū)ο缶幊淌且环N解決軟件復用的設(shè)計和編程方法。 這種方法把軟件系統(tǒng)中相近相似的操作邏輯和操作 應(yīng)用數(shù)據(jù)、狀態(tài),以類的型式描述出來,以對象實例的形式在軟件系統(tǒng)中復用,以達到提高軟件開發(fā)效率的作用。
    也許這些專業(yè)術(shù)語天生很難讓人理解,我們換一種通俗易懂的想法去思考。

面向過程:自己靠雙手按照流程去解決問題。面向?qū)ο螅赫覀€對象,讓它幫你去解決問題,自己輕松了。兩者都是解決問題的一種思路,沒有哪里不對,可是總是覺得怪怪的...

面向?qū)ο笫且环N設(shè)計思想:

  • 符合人們的思考習慣
  • 把執(zhí)行者變成指揮者
  • 簡化功能,把復雜的事情簡單化

面向?qū)ο笥腥筇卣鳎?/strong>封裝、繼承、多態(tài)

第二階段:正則表達式、網(wǎng)絡(luò)編程(TCP、UDP、FTP與HTTP)、MySql數(shù)據(jù)庫

正則表達式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達式、規(guī)則表達式、常規(guī)表示法是計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些匹配某個模式的文本。它是處理字符串的強大的工具,它有自己特定的語法結(jié)構(gòu),有了它,實現(xiàn)字符串的檢索、替換、匹配驗證都不在話下。當然對于爬蟲來說有了它,我們從html中提取我們想要的信息就非常簡單了。

其實正則表達式不是Python獨有的,它在其他編程語言中也可以使用,但是Python的re庫提供了整個正則表達式的實現(xiàn),利用re庫我們就可以在Python中使用正則表達式來,在Python中寫正則表達式幾乎都是用的這個庫。
網(wǎng)絡(luò)編程:

  • TCP — 傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。

  • 當客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。

  • 要學習TCP,一定要知道”三次握手,四次拜拜”所謂的三次握手,就是發(fā)送數(shù)據(jù)前必須建立的連接叫三次握手,握手完了才開始發(fā)的,這也就是面向連接的意思。

  • UDP — 用戶數(shù)據(jù)報協(xié)議,是一個無連接的簡單的面向數(shù)據(jù)報的運輸層協(xié)議。

  • UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地。

  • 由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速度很快。

  • UDP是一種面向無連接的協(xié)議,每個數(shù)據(jù)報都是一個獨立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內(nèi)容的正確性都是不能被保證的。

  • HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用。

  • HTTP連接使用的是“請求—響應(yīng)”的方式,不僅在請求時需要先建立TCP連接,而且需要客戶端向服務(wù)器發(fā)出請求后,請求中包含請求方法、URI、協(xié)議版本以及相關(guān)的MIME樣式的消息,服務(wù)器端才能回復數(shù)據(jù),包含消息的協(xié)議版本、一個成功和失敗碼以及相關(guān)的MIME式樣的消息。

  • 在請求結(jié)束后,會主動釋放連接。從建立連接到關(guān)閉連接的過程稱為“一次連接”。

  • 由于HTTP在每次請求結(jié)束后都會主動釋放連接,因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態(tài),需要不斷地向服務(wù)器發(fā)起連接請求。通常的做法是即時不需要獲得任何數(shù)據(jù),客戶端也保持每隔一段固定的時間向服務(wù)器發(fā)送一次“保持連接”的請求,服務(wù)器在收到該請求后對客戶端進行回復,表明知道客戶端“在線”。若服務(wù)器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到服務(wù)器的回復,則認為網(wǎng)絡(luò)已經(jīng)斷開

  • FTP文件傳輸協(xié)議(File Transfer Protocol, FTP)是TCP/IP網(wǎng)絡(luò)上兩臺計算機傳送文件的協(xié)議,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNET上最早使用的協(xié)議之一,它屬于網(wǎng)絡(luò)協(xié)議組的應(yīng)用層。

  • FTP客戶機可以給服務(wù)器發(fā)出命令來下載文件,上載文件,創(chuàng)建或改變服務(wù)器上的目錄。

  • MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。

  • 數(shù)據(jù)庫 - MySQL

  • MySQL高級

  • MySQL與Python的交互

第三階段:web基礎(chǔ),HTML、CSS、JavaScript、JQuery、Bootstrap、Ajax-數(shù)據(jù)異步交互。

學了一定的理論基礎(chǔ)之后,就是大量實踐 (所以從你的項目開始做吧)!

實踐中總結(jié),實踐中完善和扎實理論(問題總是要在實踐中發(fā)現(xiàn)和解決,不能解決實際問題的理論就是狗屎

最好能有個人能告訴你 你的代碼寫得有多爛...

第四階段:Django

問題:

Python是不是需要很深厚的編程基礎(chǔ),我編程基礎(chǔ)基本為0,是不是不適合學這個?
??python是腳本語言,語法簡單最容易學習,對于沒有基礎(chǔ)的初學者來說,學習編程最重要的是保持初心和堅持、堅持、堅持。當初怎么想起來學編程的呢?很多人都是從入門到放棄,固然有天賦的因素,缺少目的性也是一個很關(guān)鍵的因素。

個人認為學好一門語言最有效的方法就是持續(xù)不斷的進行敲敲敲(廢話),畢竟編程是個手藝活,手熟是一切的基礎(chǔ),不要怕出錯,出現(xiàn)問題去解決問題才是我們進步最快的方法,要覺得自己不是為了當程序員,學習編程是為了解決問題,把你的問題分解細化,讓它一步一步驅(qū)動你的學習過程,學起來就沒那么難啦。

你學了,兩年后最起碼你是個25歲的程序員,牛不牛逼另說,你不學,你只是個25歲的人。
??
????就這些吧。

最后,copy一段曾經(jīng)從知乎上看到的文字,或許它真正預(yù)示著Python的未來:

大概在 2003 或者 2004 年的時候,我買過一本 Python 的書,作者是一位巴西人。他說自己之所以堅定的選擇 Python,是因為他小時候經(jīng)常夢到未來世界將由一條大蟒蛇(蟒蛇的英文為python)統(tǒng)治。我當時覺得這哥們好可憐,做個夢都能夢到這么恐怖的場景。但今天來看,也許他只是像黑客帝國里的程序員安德森一樣,不小心穿越到未來,并且窺探到了世界的真相。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容