學習Python也有一段時間了,學到了不少,從什麼也不懂到入門,如今談談python怎麼入門。html
**注意:**本文沒什麼邏輯,純屬我的對學習歷程的回顧。python
說實話,這個話題,若是由一個在python領域工做多年對項目對語言都有本身的獨特的理解,結果會更有信服力。而我可能並不適合來回答這個問題,理由以下:程序員
可是從另外一個角度思考,我又以爲我頗有資格來回答這個問題,理由以下:web
做爲一個python領域的編程小白(真的是小白啊),我更懂和我同樣編程零基礎、邏輯又很差的初學者在初次接觸python語言之時,心裏的困惑和掙扎(其實python相對來講比較簡單了);按照個人學習週期及其效果來看,個人學習效果獲得了本身對本身的檢驗;正則表達式
個人python學習是在大學剛畢業就開始的,而非是在職場的強壓下被逼無奈之下開始的,因此不帶不少的功利性和企圖速成的快節奏,一樣也是按需去學,因此對於基礎的把握及學習的節奏的經驗對我我的仍是蠻有幫助的。 ###關於學習初衷: 首先我想說的是,在打算學習python以前必定要先問本身一句,你學習python的目的是什麼?數據庫
是爲了應對職場壓力,被動充電?亦或者僅僅一時心血來潮,看到現在的大數據或者人工智能發展的如火如荼、情不自禁的來湊一波熱鬧?或者是純粹只是爲了興趣、實現本身的某些想法,好比時不時爬個妹子圖....等等。編程
由於目標定位不一樣,意味着你能爲此打算花費的時間長度不一樣、付出的心血不一樣、學習的路徑不一樣、學習的模塊不一樣,達到的效果也不一樣。服務器
必定要肯定好目標,按需去學,不然你在入門以前就首先會陷入迷茫和困惑,由於python除了內置的幾個包以外,可用的有不下上萬個包,若是再算上GitHub上 託管的我的開發的小衆包,可能有好幾萬了,掰着指頭數一數,夠學一生了。 ###關於學習過程: #####第一階段:Pythoy環境搭建與配置、數據類型與變量、運算符與表達式、字符串、列表與字典、函數、面向對象編程與模塊 Python面向對象編程從零開始-從沒對象到有對象。此對象非彼對象,咱們能夠從面向過程和麪向對象來學習面向對象。網絡
面向過程:根據業務邏輯從上到下寫代碼。面向對象:將數據與函數綁定到一塊兒,進行封裝,這樣可以更快速的開發程序,減小了重複代碼的重寫過程。異步
面向對象(object-oriented ;簡稱: OO) 至今尚未統一的概念 定義是:按人們認識客觀世界的系統思惟方式,採用基於對象(實體) 的概念創建模型,模擬客觀世界分析、設 計、實現軟件的辦法。
面向對象編程是一種解決軟件複用的設計和編程方法。 這種方法把軟件系統中相近類似的操做邏輯和操做 應用數據、狀態,以類的型式描述出來,以對象實例的形式在軟件系統中複用,以達到提升軟件開發效率的做用。 也許這些專業術語天生很難讓人理解,咱們換一種通俗易懂的想法去思考。
面向過程:本身靠雙手按照流程去解決問題。面向對象:找個對象,讓它幫你去解決問題,本身輕鬆了。二者都是解決問題的一種思路,沒有哪裏不對,但是老是以爲怪怪的...
面向對象是一種設計思想:
**面向對象有三大特徵:**封裝、繼承、多態
#####第二階段:正則表達式、網絡編程(TCP、UDP、FTP與HTTP)、MySql數據庫 正則表達式,又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法是計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些匹配某個模式的文本。它是處理字符串的強大的工具,它有本身特定的語法結構,有了它,實現字符串的檢索、替換、匹配驗證都不在話下。固然對於爬蟲來講有了它,咱們從html中提取咱們想要的信息就很是簡單了。
其實正則表達式不是Python獨有的,它在其餘編程語言中也可使用,可是Python的re庫提供了整個正則表達式的實現,利用re庫咱們就能夠在Python中使用正則表達式來,在Python中寫正則表達式幾乎都是用的這個庫。 網絡編程:
TCP — 傳輸控制協議,提供的是面向鏈接、可靠的字節流服務。
當客戶和服務器彼此交換數據前,必須先在雙方之間創建一個TCP鏈接,以後才能傳輸數據。
要學習TCP,必定要知道」三次握手,四次拜拜」所謂的三次握手,就是發送數據前必須創建的鏈接叫三次握手,握手完了纔開始發的,這也就是面向鏈接的意思。
UDP — 用戶數據報協議,是一個無鏈接的簡單的面向數據報的運輸層協議。
UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,可是並不能保證它們能到達目的地。
因爲UDP在傳輸數據報前不用在客戶和服務器之間創建一個鏈接,且沒有超時重發等機制,故而傳輸速度很快。
UDP是一種面向無鏈接的協議,每一個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網絡上以任何可能的路徑傳往目的地,所以可否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
HTTP協議是創建在TCP協議之上的一種應用。
HTTP鏈接使用的是「請求—響應」的方式,不只在請求時須要先創建TCP鏈接,並且須要客戶端向服務器發出請求後,請求中包含請求方法、URI、協議版本以及相關的MIME樣式的消息,服務器端才能回覆數據,包含消息的協議版本、一個成功和失敗碼以及相關的MIME式樣的消息。
在請求結束後,會主動釋放鏈接。從創建鏈接到關閉鏈接的過程稱爲「一次鏈接」。
因爲HTTP在每次請求結束後都會主動釋放鏈接,所以HTTP鏈接是一種「短鏈接」,要保持客戶端程序的在線狀態,須要不斷地向服務器發起鏈接請求。一般的作法是即時不須要得到任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次「保持鏈接」的請求,服務器在收到該請求後對客戶端進行回覆,代表知道客戶端「在線」。若服務器長時間沒法收到客戶端的請求,則認爲客戶端「下線」,若客戶端長時間沒法收到服務器的回覆,則認爲網絡已經斷開
FTP文件傳輸協議(File Transfer Protocol, FTP)是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最先使用的協議之一,它屬於網絡協議組的應用層。
FTP客戶機能夠給服務器發出命令來下載文件,上載文件,建立或改變服務器上的目錄。
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。
#####第三階段:web基礎,HTML、CSS、JavaScript、JQuery、Bootstrap、Ajax-數據異步交互。
學了必定的理論基礎以後,就是大量實踐 (因此從你的項目開始作吧)!
實踐中總結,實踐中完善和紮實理論(問題老是要在實踐中發現和解決,不能解決實際問題的理論就是狗屎)
最好能有我的能告訴你 你的代碼寫得有多爛...
#####第四階段:Django
###問題: Python是否是須要很深厚的編程基礎,我編程基礎基本爲0,是否是不適合學這個? python是腳本語言,語法簡單最容易學習,對於沒有基礎的初學者來講,學習編程最重要的是保持初心和堅持、堅持、堅持。當初怎麼想起來學編程的呢?不少人都是從入門到放棄,當然有天賦的因素,缺乏目的性也是一個很關鍵的因素。
我的認爲學好一門語言最有效的方法就是持續不斷的進行敲敲敲(廢話),畢竟編程是個手藝活,手熟是一切的基礎,不要怕出錯,出現問題去解決問題纔是咱們進步最快的方法,要以爲本身不是爲了當程序員,學習編程是爲了解決問題,把你的問題分解細化,讓它一步一步驅動你的學習過程,學起來就沒那麼難啦。
你學了,兩年後最起碼你是個25歲的程序員,牛不牛逼另說,你不學,你只是個25歲的人。 就這些吧。
最後,copy一段曾經從知乎上看到的文字,或許它真正預示着Python的將來:
大概在 2003 或者 2004 年的時候,我買過一本 Python 的書,做者是一位巴西人。他說本身之因此堅決的選擇 Python,是由於他小時候常常夢到將來世界將由一條大蟒蛇(蟒蛇的英文爲python)統治。我當時以爲這哥們好可憐,作個夢都能夢到這麼恐怖的場景。但今天來看,也許他只是像黑客帝國裏的程序員安德森同樣,不當心穿越到將來,而且窺探到了世界的真相。
####走一波推薦: