零基礎如何自學Python?
這是位新加入知識星球的讀者問提的問題:機械工程專業零基礎如何自學Python?因為平時分享得最多的是 Python 中高級編程技巧,而面向初學者的入門教程會涉及得少一些,畢竟入門的內容在網上可以很輕鬆獲取而且資源也很多,所以平常我也會推薦一些書籍和課程。
程序員在普通人眼裡就像魔法師,一個腳本輕鬆搶幾十盒月餅(雖然最後被開除),一個插件解決春運搶票難題,幾十行代碼搭建一個 Web 網站,用微信自動和妹紙聊天,在程序員眼裡這些事太稀鬆平常了,他們只不過是利用編程語言指揮計算機去自動完成一些需要人類重複操作的繁瑣過程,等你會編程也就不覺得大驚小怪了。
Photo by PICSELI on Unsplash
有些人學習編程剛一開始頭腦發熱,買了很多書,下載很多視頻,收藏上100G的資料,沒過幾天,熱情就褪去了,最後完成了從入門到放棄的全過程,究其原因主要是缺乏清晰的目標,沒有方向,或者方向不明確。如果你真正想把編程學好,那麼先想想為什麼要學編程,找一份編程工作,還是為了解決某個繁瑣問題,抑或是做個網站給自己用,還是寫個App,或者是爬個數據做分析,最怕的就是不知道為什麼而學,就算是為了擺脫焦慮而學習你也很難學好,很多人跑過來問我入門書看完了,接下來看什麼書?這就是典型的不知道學了有什麼樣,純粹為了學習而學習。
我們的目的是學以致用,用以促學
以學習爬蟲為例子,你學爬蟲的動機什麼?你的動機可以是從網上獲取一些數據做數據分析,例如,前段時間有位朋友找到我說,他想開一個廠房租賃公司,開之前需要選址,選址就要做市場調查,如果僅憑直覺沒有數據支撐,很難說哪個地方好,最好的辦法使用爬蟲去58這樣的平台把相關的交易數據爬下來做數據分析,這就是一個很好的動機,而且目標非常明確。
Python 編程有很多方向,有網路爬蟲、數據分析、Web開發、測試開發、運維開發、機器學習、人工智慧、量化交易等等,各個方向都有特定的技能要求,比如學數據分析就要重點掌握統計學、SQL 等知識,搞運維就要非常熟悉 Linux 系統,所以你首先要清楚你選擇的是什麼方向,這個方向有哪些知識是需要重要掌握的。
以 Web 開發,重點要理解 HTTP 協議,要知道一個網頁從瀏覽器輸入URL開始到頁面呈現出內容的這個過程發生了什麼,然後要知道 Web 開發涉及的前端知識 HTML、JavaScript、CSS都是做什麼用的,然後就是學 Python,掌握基本的語法,常用數據類型、常用模塊,就差不多可以去實現你的目標了,幾乎所有網站都需要用到資料庫,那麼你至少需要懂一點資料庫的知識,SQL 的增刪改查操作要會,程序寫完了,我們要部署,而系統一般都是運行在 Linux 環境,這個時候你還需要了解如何操作 Linux 命令。
接下來詳細介紹每個過程如何學習,以及所用到的學習資源和掌握的程度。
HTTP 協議是瀏覽器與伺服器通訊的媒介,用戶在瀏覽器輸入URL後瀏覽器會立即向伺服器發起一個請求,服務端接收請求後,從資料庫查詢到合適的數據,最終把數據返回給瀏覽器。瀏覽器與伺服器之間的通訊嚴格遵守 HTTP 協議,如果你弄懂了 HTTP 協議,那麼也就弄懂了 Web 編程的基本原理,這裡推薦兩本關於 HTTP 的書。
《圖解HTTP》
《HTTP權威指南》
前者偏向於入門,後者適合進階閱讀,前期不一定要細讀,大概理解就行,以後你還會回過頭來學習的。
不管再忙都要堅持每天保持3個小時以上的練習時間
任何一個做 Web 開發的,離不開前端三劍客,這裡的三劍客是指 HTML、JavaScript、CSS。HTML 是骨架,CSS是外衣,JS控制前兩者,為了滿足更多用戶交互行為需要 JavaScript 來控制。下面推薦的這幾本書對一個初入門的小白來說完全夠用,挑選一兩本就行,也不需要你全部看完,一本書看完前面的 60% 差不多就行了。
《HTML5秘籍(第2版) 》
《HTML5權威指南 》
《Head First HTML與CSS(第2版)》
《CSS權威指南(第3版)》
《JavaScript DOM編程藝術(第2版)》
《JavaScript高級程序設計(第3版)》
不管再忙都要堅持每天保持3個小時以上的練習時間
了解了基本的前端知識後,還是有必要了解一下前端的框架,如vue.js、boostrap、react、jquery 等等,雖然不一定每個框架都去學一遍,但至少要知道每個框架的作用,因為以後你不可能什麼都是自己重複造輪子。
學完前端知識後,你現在應該能簡單的做出一些靜態頁面了,不過,現在幾乎所有的網站都是動態的(不是動畫效果,而是頁面數據是動態變化的),就是說數據都是根據登錄用戶個性化推薦的,瀏覽器的請求發送給伺服器,伺服器從資料庫查詢獲得數據返回給瀏覽器,伺服器這邊的實現邏輯就需要用 Python 來實現,現在正是開始學 Python 的時候, Python 入門需要掌握的內容包括基本語法、數據結構、常用數據類型和常用的模塊的api方法操作等。關於 Python 的書其實很多,這裡推薦幾本入門和進階。
入門
《Python簡明教程》
《Python編程:入門到實踐》
《Python編程快速上手 : 讓繁瑣工作自動化》
進階
《流暢的Python》
《Python Cookbook》
《Effective Python》
簡明教程就是一本很薄的小冊子,希望你可以認真讀完,後面兩本入門書,至少要把前面的基礎學完,至於後面的實戰,不學也罷,因為你的興趣點不一定在那裡。
不管再忙都要堅持每天保持3個小時以上的練習時間
現在差不多可以用 Python 來做很多事情了,但是你還不知道如何寫一個 Web 應用,因為你可能不知道怎麼操作資料庫,怎麼寫 SQL 語句,對資料庫進行增刪查改,所以,別急,先學學資料庫知識吧,MySQL 是最流行的資料庫系統,大公司都在用。對資料庫最基本的了解就是要知道什麼表、行、列、主鍵、外鍵、索引這些概念,稍微複雜的就是查詢,有分組查詢,聯合查詢等各種條件查詢,你需要掌握這些基本操作。
《SQL基礎教程》
《MySQL必知必會》
這兩本數都是面向初學者的基礎教程,挑選一本就夠了,除了MySQL,還有PostgreSQL、Oralce、SQL Server 都屬於關係型資料庫,另外也有 MongoDB、Redis 這樣的非關係型資料庫,你可以相應的都去了解一下,不一定非要馬上就學。學完資料庫之後,你要想的一個問題就是如何用 Python 操作資料庫的 CRUD,雖然沒有專門的書籍講這個,但是網上有很多教程寫如何用 Python 操作 MySQL 的,所以,學會使用搜索引擎非常重要,因為以後很多時候都是面向 Google 編程。為了防止忘記前面的內容,也要不時地複習、練習前面的內容。
不管再忙都要堅持每天保持3個小時以上的練習時間 。
現在你差不多所有的基礎知識都有所掌握,終於可以磨刀霍霍迫不及待開始第一個真正屬於你自己作品的開發之旅了,因為前面你已經掌握了 HTTP 協議,所以現在你可以選擇一個 Web 框架,基於這個框架來開發我們的 Web 網站,這裡推薦使用 Flask,這個框架比較流行,然後又是一個比較輕量級的框架,非常靈活。學 Flask 看狗書《Flask Web開發:基於Python的Web應用開發實戰》。一個完整的 Web 網站從前端 HTML、CSS、JavaScript再到後端 Flask,資料庫連接、CRUD操作基本都能跑通了,項目差不多基本成型,只剩下最後一個步驟,就是如何把做好的程序發布到伺服器讓它一直穩定運行,持續提供服務。
通常,我們的 Web 程序會部署在 Linux 伺服器,很少有用 Windows 作伺服器的,所以,熟悉 Linux 系統還是非常有必要的,Linux 要掌握到什麼程度呢?當然,至少要會基本命令操作才行,推薦下面這幾本書
《快樂的Linux命令行》
《鳥哥的Linux私房菜》
《Linux命令行與shell腳本編程大全》
熟悉完 Linux,程序也部署好了,其實還差一步,網站需要一個好記的域名方便別人訪問,畢竟沒人能記住你的 IP,所以,後期的域名購買,HTTPS 配置,Nginx 配置,都可以在網上找到相應的答案。
不管再忙都要堅持每天保持3個小時以上的練習時間 。
學編程就是一個打怪升級的過程,這個過程一定是曲折的,但前途是光明的,痛並快樂著。
最後祝你升級成功。
覺得不錯幫忙點贊、轉發
如果你是零基礎無從下手,迷茫沒有方向不知道該如何學習可以找我,Python學習群:593088321
推薦閱讀:
※25 歲才開始學習編程靠譜嗎?40 歲都不晚!
※(Python進階必看)賴明星的Python精品圖書重磅發布!!
※構建PyQt5.8/Python2.7
※Python安全工具開發(一) :分散式爬蟲初探
※【Python數據分析】金融時間序列分析(一)