程瀅慈的學習歷程檔案 - 111-1 人工智慧 - 0. Python 入門 |
|
|
0. Python 入門Python 是什麼Python 是一種直譯式、物件導向、功能強大的高階程式語言,其設計強調程式碼的可讀性以及簡潔的語法,使用空格縮排來劃分程式碼區塊,不像其他常見的程式語言大多使用大括號或關鍵詞。 因此,Python 程式的結構清楚明瞭,比起其他常見的程式語言(例如 C 或 Java 等),Python 讓開發者 Python 的實務應用Python 最方便也最厲害的就是擁有非常多函式庫(Library),任何能想到的功能或方法都已有人整合起來,只要善加利用,就能節省大量開發時間,尤其對人力少又需搶時間發展產品的新創來說,這真的超棒! Python 的實務應用主要有: 數據處理與分析資料處理、統計與分析不管在商業領域或科學研究上一直都極重要,以往大多用 Excel 工具來完成這項任務,但隨著硬體設備提升、互聯網發達,取得並儲存海量資料已經不像從前那麼困難又高成本。 而 大數據(Big Data)分析能大幅降低統計誤差,增加準確率,慢慢發展為新趨勢,不過 Excel 能處理的資料量有限,使得 R 和 Python 漸漸興起。 Python 有許多專門處理數據分析的函式庫可以方便運用,再加上與 R 相比,除了統計用途,還多了能建構應用程式、系統或網站的功用,所以更通用許多。 人工智慧Python 可以很方便處理並分析數據的特性,更進一步發展運用到人工智慧 (Artificial Intelligence,AI)。 AI 涵蓋機器學習(Machine Learning)和深度學習(Deep Learning),每天都有成千上萬的相關專案在用著數百個 Python 函式庫,例如 TensorFlow、Keras、Torch,以及用於電腦視覺 OpenCV 等。 網站開發雖然絕大部分網站開發是用 PHP、Java、JavaScript 等程式語言,可是現在 Python 也越來越多人用,因為強大的函式庫、廣泛的實際應用使 Python 日漸成為 Web 開發的必需。 與 Web 框架有關的函式庫較熱門的有 Django、Weppy、Bottle、Flask 等,其中 Django、Weppy 為較重量級的 Web 框架,Bottle、Flask 則是輕量級。 ps. 如果想了解更多 Python Web 框架,可以參考這篇文章:13個Python web框架比較 ps. 我自己也常用 Plotly 來做視覺化互動報表,並建成網站讓其他使用者可以很清楚、很方便看到資料分析後的結果,而 Plotly 的底層就是 Django 架構。(點我到 Plotly Graph Library) 自動化測試任何產品在發表前都需要經過一道道「測試」,測試的程序通常要花費大量時間,如果用人工測試極度浪費人力成本,所以自動化測試尤其必要。 Python 有許多協助自動化測試的函式庫,例如用來幫助測試網頁前端的 Selenium、以關鍵字驅動為主的自動化測試工具 Robot Framework 等。 ps. Selenium 是動態網頁爬蟲,除了可以用來做自動化測試,也可以抓網頁內容,常搭配 BeautifulSoup 解析 HTML 網頁原始碼。 延伸文章:Selenium 是什麼?用 Python Selenium 自動爬網頁抓報表,初學者必看的簡單教學 ※ 除了前面舉例的幾個函式庫,在這裡補充幾個其他常用的函式庫,將它們統整成表格如下:
Python 的優點容易理解Python 是一種解釋型語言,語法簡化而不複雜,強調自然語言,所以讀寫 Python 就像在用英文跟電腦溝通,十分貼近一般人的使用習慣,非常直覺又很容易撰寫。 舉例,假如想要讓電腦顯示”Hello World!”,Python 程式碼只要寫一行: Python:
但想得到同樣的結果,用 C 或 Java 就要寫好幾行,需要先做宣告才能 print。(如下 2 段程式碼) C:
Java:
簡短的程式碼就有強大的功能Python 有上百個函式庫供其他開發者可以輕鬆使用,短短的程式碼就能實現所需功能,因此大幅減少開發初期需耗費的時間與精力。 而這主要是因為背後強大且發展成熟的社群,不但支援與開發大量的函式庫與框架,而且幾乎完全免費,還提供大量文件和教學影片,讓不同級別的學習者與開發者都能輕易增強所需知識。 任何一個程式語言只要缺少開發人員支持,就很難被廣泛使用,甚至面臨絕跡,但 Python 社群非常活躍,沒有這個問題,如果有任何疑問,都可以獲得社群裡各式各樣不同開發人員的即時支持。 ps. 台灣也有 Python 社群(FB 社團) – Python Taiwan,可以加入跟大家一起討論問題、一起學習! 容易維護Python 的架構非常明確,再加上同樣的一個功能,Python 可以比其他程式語言用更少的程式碼達成,所以相對容易維護許多。 程式碼少,當然出錯的機率就更低! 應用範圍廣豐富的函式庫讓 Python 的應用範圍非常廣泛,不僅可用來開發網站、應用程式與系統等,許多雲端服務供應商也以類似函式庫的方式提供跨平台支援工具,真的十分方便。 還有許多特定用途的函式庫,比如應用於機器學習的 scikit-learn、專門處理自然語言的 NLTK (natural language toolkit)等。 Python 的缺點執行速度慢Python 好讀好寫,是解釋型程式語言而非編譯型,很多其他語言(比如 C 或 Java)在編譯時會先做好的處理,Python 在執行的時候才開始做,所以執行速度相對地就比較慢。 不過,同樣地,程式碼也比其他程式語言少好幾倍。 ps. 如果想對這個部分有更深入的了解,可以參考這篇文章:為什麼 Python 這麼慢?比其他程式語言慢十倍的病根就在「全局解釋器鎖」 ps. 如果想改善 Python 程式碼的執行速度,可以參考這篇文章:用這 6 種方式優化程式碼,讓你的 Python 速度提升 30%! 強制縮排如果你有學過其他程式語言,會發現大多數常見的程式語言是用大括號來區分函式、類別或功能,但 Python 是用 4 個空白鍵縮排來區分,一定要特別注意,若沒有按照這個規則會出現錯誤。 ps. 有許多編譯器(compiler)可以直接按 Tab 鍵自動縮排。 適合誰學習原則上所有人都適合! 對新手來說,Python 的入門門檻比起其他常見的程式語言低很多很多,語法簡潔、架構明確清楚,相對容易學習與上手,也非常容易使用。 但若想要程式基礎扎實穩健,建議從 C 開始學,不建議只學 Python,因為 Python 太方便會讓人習慣都用函式庫或套件,很容易忽略、沒有完整理解整個程式運作邏輯,將來遇到需要客製化時容易不知所措。 怎麼開始學習由於 Python 日趨熱門與普及,學習資源相當多元,不管是書籍,還是實體課程、線上課程等,只要 Google 下好關鍵字,就能搜尋到許多有幫助的資訊。 以下推薦適合剛入門、還沒有基礎的初學者: 推薦書籍
推薦線上課程免費線上開放課程或資源: 付費線上課程: ps. 比起付費課程,免費課程如果有任何問題,需要自己想辦法找答案,實作練習也沒有老師或助教可以請教與實際指導。 GithubTutorial無論是書、課程、Github 或 tutorial,選一個自己能看得下去的,然後認真地完成,並仔細地跟著裡面的實作練習,都可以好好上手、大大增加功力。 找到適合自己的學習方式是學得最輕鬆、進步也最快! 如果不知道該怎麼選擇教材,不妨想想自己『為什麼要學 Python』? 只是單純想學新的程式語言、想利用網路爬蟲快速抓取資料、想做數據分析、想投入機器學習、想開發網頁應用程式、理財投資 …,從這個角度切入,也會比較有頭緒知道自己所需要的。 要注意的是,Python 2 和 Python 3 有許多語法完全不同和不相容問題,現今大部分開發採用 Python 3 以後的版本,新手在學習前一定要好好確認所選教材。 有什麼樣的工作機會前面提到,Python 的應用範圍非常廣泛,所以職缺當然也不少:
如果你本來就是做程式開發相關的工程師,熟悉 Python 會是你其中一個加分條件,畢竟現在 Big Data 和 AI 很夯,再加上許多平台(如 Google、Youtube、Facebook、Instagram …)利用 Python 開發。 如果你想學寫程式來找工作,志向是當程式開發相關的工程師,我建議還是要學習 C、C++ 或 Java,因為 Python 真的太方便,太習慣用函式庫或套件反而容易缺乏訓練邏輯思維。 另外,還要考慮一個蠻現實的問題,目前在台灣,除非是新創公司,否則一般正規大公司,絕大多數還是以 C、C++、Java 為主,所以單靠精通 Python 要找到不錯且維持高薪的工作其實不容易。 結論本文整理並介紹了以下 7 個重點:(ps. 如果有漏掉都可以直接點擊標題連結回去看) Python 多功能、應用廣泛且方便,還能跨平台在任何類型環境中使用,如電腦應用程式、網頁開發、移動應用程式、硬體程式等,無論使用什麼平台,幾乎沒有效能損失的問題。 Python 易學好上手,適合所有人學習並運用。不過,若想成為專業的程式開發工程師,除了學會善用 Python 的函式庫,真正應該學的是解決問題的思維。 雲端運算、機器學習與大數據分析是目前科技業最熱門的,它們幫助許多企業改變和優化工作流程,而機器人相關技術蓬勃發展,學習 Python 已成為未來趨勢之一。 能用更少的程式碼達到同樣的結果。
|
|