###### tags: `python` # 如何學好python ## 前言 隨著大數據、物聯網、人工智慧的發展,越來越多的人選擇python作為開發的程式語言,但是對於從沒接觸過程式語言的朋友們,有沒有什麼方法可以降低進入的門檻,減少不必要的挫折呢。個人就過去學習經驗提供一些過來人的建議,希望可以幫助大家,少走一些冤枉路。 ## 上課 目前學習python的管道真的很多,基本上可以分成三大類: - 書本 - 實體課程 - 線上課程 這三種都有他們的優缺點,個人可以針對自己的情況挑選適合的方法學習。如果您對程式語言真的一竅不通,個人會推薦先上「實體課程」,畢竟**有人可以實際示範馬上了解操作步驟,出現問題又有人能立即指出錯誤原因以及解決方法**。若您真的完全沒有程式撰寫的概念,可能連如何安裝python建立開發環境就會產生問題,浪費寶貴時間。有的人可能因為如此而誤以為自己學不會程式語言而放棄,那就真的非常可惜了。 若想把python學好,單靠一種學習資源是不夠的,因為不管任何一種管道,礙於時間因素或是成本因素都會適度篩選,維持學習的主旋律。不同的學習資源可以幫助我們相互印證,擴展對python的理解。 ## 書本 個人在挑電腦書籍時有一個秉持的原則,就是這本書的內容**是要你自己看得懂的**,不要去挑哪種看起來很厲害,但是自己看得很辛苦的書。這種情況有可能是這本書是寫給進階者閱讀的或是這本書解說的、翻譯的不是很簡單明瞭。 就算能看得懂書本範例程式的意含,最好還是自己親手打一遍,有時候看都沒問題,換成自己寫就會少東少西無法正常執行,不過這種初期錯誤反而是好的,當這些錯誤弄懂之後,之後撰寫程式就不會在發生了,而且就算發生也可以很快就知道怎麼更正。 ## 洋蔥學習法 個人非常推薦**洋蔥學習法**,這種方法的概念是不用一次把所有的知識都學會,而是一開始只學一小範圍,之後重複在加上新的範圍,每次學習都包含之前的內容。第一次不熟,第二次有點概念,第三次就熟悉輕鬆,也不用哪種一次就要完全吸收的壓力。 ## 練習小題目 最好理解應用python指令、函數、類別、套件的方法就是找個小題目來練習,有可能是網路上看到的題目或是自己生活上遇到的事情。初學者一開始通常會不知道該怎麼起頭或是知道邏輯上的程序但不知道該如何用python語法實現。隨者每次的嘗試,不管是成功或是失敗,經驗值都會提昇,其實很多程式設計的高手也是透過不斷的練習、閱讀、討論來提昇自己自己程式開發的技巧與敏銳度。 ## 修改/擴充既有程式碼 有時候看到老師、書本、網路的範例程式,我們可以近一步試者增加新的功能、新的畫面、簡化原有程序或是讓他更加模組化,在這過程中對程式碼的意含與掌握度就會越來越高,也可以學到其他人程式撰寫的技巧。 ## 閱讀他人的程式碼 學好python語法最好的方法就是動手寫程式,不過一開始可能有人連該怎麼組織語法達成目標都沒有概念,這時候閱讀別人怎麼寫的會有很好的幫助。當你寫了幾個專案開發之後,閱讀高手寫的程式可以提昇自己的程式撰寫功力到另外一層水準。觀察高手程式最好的地方就是Github網站,那裡有非常非常多的開放原始碼專案,看都看不完,你可以從你有興趣的專案開始了解。 ## 上網尋找錯誤解法 了解python錯誤訊息的意含是非常重要的事情,因為我們可以從錯誤訊息找到錯誤的來源,這裡面包含錯誤的行數以及錯誤的原因。通常85%的錯誤都來至python所指出的錯誤行,15%來自所指行數之前的錯誤。 如果不了解python錯誤訊息的意含,可以直接google錯誤訊息的文字就會有很高的機率找到其他人對這件事情的討論以及解決方法。 另外,「stackoverflow」這個網站也是很多人找錯誤解法的熱門討論網站,基本上程式設計界大概是無人不知無人不曉了,裡面有很多熱心的網友分享對這些錯誤訊息的解法,「人人幫我,我幫人人」大概就是最好的寫照。 ## 整合開發工具(IDE) 好的開發工具可以讓專案進行的更加便利,程式開發更加愉快。這裡強烈推薦微軟的免費開發工具 - Visual Studio Code(VS code)。它除了可以整合各式各樣的程式語言(不只python)也整合了主流的「版本管理軟體 - git」、提供完整的除錯模式,程式碼自動完成等很多很多好用的第三方提供的擴充工具。 就初學者來說,若需要安裝套件,最好的方法是在終端機模式直接輸入「pip install 要安裝套件的名稱」這種方式可以減少很多不必要的錯誤,等到對python開發環境有更多的了解或需要,再透過docker或是anaconda來獨立每個專案的開發環境。 ## 除錯模式 不管是找出程式錯誤所在(特別是商業邏輯不合預期)或是追蹤、理解他人程式碼的意函,除錯模式都能幫上很大的忙。在VScode除錯模式需要先設定一個中斷點(程式執行到這裡之前停下來),再按F5,之後就可以一行一行的執行也可以隨時觀察每個變數內容的變化。好好了解除錯模式的使用方法,絕對是值回票價的投資,也會節省很多寶貴的時間。 ## 讀書會/聚會/研討會 台灣尤其在台北有非常非常多特定程式語言的聚會。每年也都會舉辦相關的研討會。這是了解更多同好的好機會,也可以了解目前最新技術、軟體的管道。寫程式有時候就是一直找不出到底錯在哪裡,上網也找不到相關解決方法(有可能是沒有相關背景知識或是找錯專有名詞),對外尋求其他同好可能當天就解決問題或是找到正確方向,不管那一種情況都可以節省寶貴的時間。 就算目前沒有遇到什麼問題,參加聚會聊聊天可以暫時脫離坐在電腦前面的狀態,轉換心情,有時候聚會認識的朋友很有可能就是日後合作的夥伴。 ## 參加facebook python討論群組 網路發達的時代除了參加實體聚會,我們也可以在facebook或是其他社交平台找到各個程式語言、軟體的粉絲頁或社團。不用像研討會一年一次,在平台上每天都可以吸收國內外最新的技術相關訊息分享或是討論。有任何相關問題也都可以上去尋求幫忙,當你最後找出原因解決問題時,希望你也能將解決方法回饋到群組內。你會遇到的問題,很有可能別人之前就遇過了,你現在解決的問題很有可能也是其他人之後會遇到的問題。 ---- ## 參考資料 - 高中生程式解題系統(https://zerojudge.tw) - 1000道Python程式設計題(https://codertw.com/程式語言/503723/) -