註:本文同步刊載在Medium,若習慣Medium的話亦可去那邊看呦!
終於是最後一天了!!!
又來到了輕鬆聊的時間。
坦白說這次的30天過得並不輕鬆,
除了一些外務需要處理外,一開始也是從沒有存稿的狀態下開始的。
每天被進度追著打的感覺實在是很累XD!
寫這一系列文章的初衷,
最初是因為看到自己的學生們,
因為從LeetCode學演算法系列文章找到了我,
但很多卻是想要轉職但對Python不熟的同學。
不,應該是說對於整個程式語言該從哪裡開始都不清楚。
通常這樣的狀況下,我們會從各種巨X電腦、O成電腦,
或各種線上學院開始先學基本的程式語言。
問題來了:
就算是同一家電腦甚至是資策會,
一來學費挺貴的,二來師資有所落差,風格也各有不一,
沒有人能保證自己一開始遇到的老師就是最適合自己的。
所以,建構一個基礎的系列文章教學,
內容不要像X者歸來那樣子又厚又重,
並且範例不要千篇一律讓讀者容易失去興趣,
是一件非常重要的事情。
如果拿這一系列文章和書籍相比,
讀者可能會發現,有很多東西是被筆者略過的:
例如我們沒有講到匿名函式(lambda function),
也沒有講到namedtuple;
沒有講到pdf和xls的檔案處理,以及另一個數據分析的好用工具pandas;
沒有講到OpenCV(可能比PIL更容易被用到,而且支援跨平台);
沒有講到網路連線相關的模組;
也沒有講到多執行緒/多處理程序(multi-threading/multi-processing)。
並不是它們不重要,而是筆者認為,
對於初學者而言,重點不是每一個都聽過摸過,
而是能先使用既有基本的東西,並且從它們當中,
組合出自己想要的程式。
在這個過程中,有遇到任何問題,
就去查資料、文件檔,或者向人請教提問,
將自己需要的知識不斷補足完善,這才是筆者希望看到的。
讓我們簡單回顧一下這三十天學了什麼,
以及再深入的話,可以再往哪個方向了解:
1. Python的安裝,除了本文提到的方式外,
另外還有Anaconda/pipenv等,
對於需要架構乾淨的多個執行環境而言蠻重要的,
同時也可以建構jupyter notebook,
使用iPython的以方格為單位的執行。
2. 變數、型態、運算子的部分,
其實還有很多跟位元運算有關的處理以及技巧,
如果在寫題目遇到跟bit相關的東西的時候會很常用;
字串也帶有許多好用的方法可以運用,
同時還有使用正規表達式(regular expression)來搜尋字串的方法,
這個比較易學難精,有興趣可以再深入了解。
3. 進階的資料型態,記得我們的炸蝦嗎XD?
字典、串列、集合、元組的應用相當廣泛,
有一些東西和方法可能沒有詳列上去,
讀者可以遇到狀況時先查查有沒有可以用的對應內建方法呦!
4. 程式結構及語法,包含了if, for, while等,
應該算是最基礎的東西了,這當中應該唯有搭配Except的部分比較特殊,
再請多加留意。
5. 例外處理和遞迴,有關遞迴的處理速度和記憶體問題,
文章有更新一位在「程式人雜誌」社團的讀者提供的深入探討,
讀者可以再行參閱。
6. 模組與套件,關於其讀取的部分,其實有一些更細部的規則,
若想要建構比較嚴謹的大型程式的話,請再搜尋相關的文章。
7. 標準程式庫,其實還有很多很多很多XD,
建議讀者可以參照著Python的官方文件,
可以針對需求看有沒有自己需要的東西。
8. 物件與類別,
是所有物件導向程式語言(OOP, Object-Oriented Programming)
當中很重要的一環,當中的概念請務必好好理解清楚,
在使用時才不容易混淆。
9. 檔案讀寫,
除了一般文字檔、CSV、JSON外,
XML/YAML也是常用的格式;除此之外,了解HTML的格式,
將有利於有志朝網頁爬蟲相關技巧學習的讀者。
若以爬蟲而言,beautifulsoup, scrapy, request, selenium可能是重要的關鍵字。
10. 日期時間、圖形處理、GUI介面等,
都算是Python內建好用的模組,尤其對於Tkinter而言,
也有很多其他的模組可以取代或者讓它變更好用。
11. 其他常用的資料結構相關模組,可以搭配著演算法學習,
效果會更好,最好搭配筆者的從LeetCode學演算法系列XD
12. 科學運算、繪圖及深度學習,
是走向AI/資料科學的敲門磚,後續還有更多更深入的東西可以玩的,
有興趣的讀者若想要走AI相關領域,
建議可以從吳恩達/李宏毅/林軒田等大師的機器學習課程開始,
如果想要先了解一點基礎簡單的深度學習框架,
閱讀莫煩Python的系列教學也不錯!
13. 其他沒有提到的如Python+Flask(前端),
Python+SQLite/MongoDB/Redis(後端)等,
如果讀者扎扎實實地經過這三十天的練習,
應該會擁有進一步透過網路文章資源來學習這些的能力,
就再請大家針對需求去搜尋囉!
除此以外,每天的副標題,
其實都跟當天要講的內容有關聯性,
並不單純只是梗或者是歌詞而已,
若讀者可以有效地將文章內容和副標題連結上,
相信能更理解文章所要表達的內容。
最後,不免幫自己工商一下:
筆者目前除了從LeetCode學演算法的線上課程外,
也和幾位朋友成立一個團隊,名為Chill Cat(去憂貓),
當前正在鑽研AI輔助心理諮商的部分;
同時我們也有經營有關AI智能化交易指標的研究,
(可以是MetaTrader,也可以是別的XD)
以及協助企業評估/導入AI或自動化的可能。
歡迎有興趣合作或委託開發的諮商師、心理師,
以及公司行號和我聯絡。
來信請寄:bbsc.aiteam@gmail.com。
平常的時候,若對於LeetCode解題感興趣,
還是可以在FB的Python Taiwan社團,
或我的Medium上看到我!
也可以來追蹤我的粉專:跟著Desolve學程式,
裡面會不定時分享一些程式相關的文章或資訊呦!
感謝大家的收看,那我們明年......
等一下,先不要,先不要XD
我再考慮看看啦XDDD!
就這樣,掰掰~