
學習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>
面向過程:根據(jù)業(yè)務(wù)邏輯從上到下寫代碼。面向?qū)ο螅簩?shù)據(jù)與函數(shù)綁定到一起,進行封裝,這樣能夠更快速的開發(fā)程序,減少了重復代碼的重寫過程。
面向?qū)ο?object-oriented ;簡稱: OO) 至今還沒有統(tǒng)一的概念 定義是:按人們認識客觀世界的系統(tǒng)思維方式,采用基于對象(實體) 的概念建立模型,模擬客觀世界分析、設(shè) 計、實現(xiàn)軟件的辦法。
面向?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)用軟件。
第三階段:web基礎(chǔ),HTML、CSS、JavaScript、JQuery、Bootstrap、Ajax-數(shù)據(jù)異步交互。
- HTML 5&CSS快速入門
- JavaScript
- Javascript(1)-js入門
- Javascript(2)-js進階
- JQuery
- Ajax-數(shù)據(jù)異步交互
- 項目實戰(zhàn)
學了一定的理論基礎(chǔ)之后,就是大量實踐 (所以從你的項目開始做吧)!
實踐中總結(jié),實踐中完善和扎實理論(問題總是要在實踐中發(fā)現(xiàn)和解決,不能解決實際問題的理論就是狗屎)
最好能有個人能告訴你 你的代碼寫得有多爛...
第四階段:Django
- Django教程(一)- Django視圖與網(wǎng)址
- Django教程(二)- Django視圖與網(wǎng)址進階
- Django教程(三)- Django表單Form
- Django教程(四)- Django模板及進階
- Django模型(數(shù)據(jù)庫)及Django Query常用方法
- Django教程(五)- 上傳及顯示
- Django教程(六)- 搭建簡單的博客系統(tǒng)
問題:
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)治。我當時覺得這哥們好可憐,做個夢都能夢到這么恐怖的場景。但今天來看,也許他只是像黑客帝國里的程序員安德森一樣,不小心穿越到未來,并且窺探到了世界的真相。