程瀅慈的學習歷程檔案 - 111-1 人工智慧 - 0. Python 入門
 


歷程檔案 Portfolio

    0. Python 入門

    Python 是什麼

    Python

    Python 是一種直譯式物件導向、功能強大的高階程式語言,其設計強調程式碼的可讀性以及簡潔的語法,使用空格縮排來劃分程式碼區塊,不像其他常見的程式語言大多使用大括號或關鍵詞。

    因此,Python 程式的結構清楚明瞭,比起其他常見的程式語言(例如 C 或 Java 等),Python 讓開發者

    Python 的實務應用

    Python 最方便也最厲害的就是擁有非常多函式庫(Library),任何能想到的功能或方法都已有人整合起來,只要善加利用,就能節省大量開發時間,尤其對人力少又需搶時間發展產品的新創來說,這真的超棒!

    Python 的實務應用主要有:

    數據處理與分析

    資料處理、統計與分析不管在商業領域或科學研究上一直都極重要,以往大多用 Excel 工具來完成這項任務,但隨著硬體設備提升、互聯網發達,取得並儲存海量資料已經不像從前那麼困難又高成本。

    而 大數據(Big Data)分析能大幅降低統計誤差,增加準確率,慢慢發展為新趨勢,不過 Excel 能處理的資料量有限,使得 R 和 Python 漸漸興起。

    Python 有許多專門處理數據分析的函式庫可以方便運用,再加上與 R 相比,除了統計用途,還多了能建構應用程式、系統或網站的功用,所以更通用許多。

    Big Data

    人工智慧

    Python 可以很方便處理並分析數據的特性,更進一步發展運用到人工智慧 (Artificial Intelligence,AI)

    AI 涵蓋機器學習(Machine Learning)和深度學習(Deep Learning),每天都有成千上萬的相關專案在用著數百個 Python 函式庫,例如 TensorFlowKerasTorch,以及用於電腦視覺 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 自動爬網頁抓報表,初學者必看的簡單教學

    Selenium 是什麼

    ※ 除了前面舉例的幾個函式庫,在這裡補充幾個其他常用的函式庫,將它們統整成表格如下:

    函式庫名稱適用於
    Pandas數據操作與處理
    Matplotib繪製圖表
    OpenCV電腦視覺
    Plotly視覺化互動圖表
    Django、Weppy、Bottle、Flask服務器端 Web 開發
    Selenium網頁爬蟲、自動化測試
    BeautifulSoup解析 HTML 和 XML
    SciPy工程應用、科學和數學
    NumPy科學計算
    TensorFlowKerasTorch深度學習
    scikit-learn機器學習

    Python 的優點

    容易理解

    Python 是一種解釋型語言,語法簡化而不複雜,強調自然語言,所以讀寫 Python 就像在用英文跟電腦溝通,十分貼近一般人的使用習慣,非常直覺又很容易撰寫。

    舉例,假如想要讓電腦顯示”Hello World!”,Python 程式碼只要寫一行:

    Python:

    print("Hello World!")

    但想得到同樣的結果,用 C 或 Java 就要寫好幾行,需要先做宣告才能 print。(如下 2 段程式碼)

    C:

    #include <stdio.h> int main() { printf("Hello World!"); }

    Java:

    public class Main {     public static void main(String[] args) {         System.out.println("Hello World!");     } }

    簡短的程式碼就有強大的功能

    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. 比起付費課程,免費課程如果有任何問題,需要自己想辦法找答案,實作練習也沒有老師或助教可以請教與實際指導。

    Github

    Tutorial

    無論是書、課程、Github 或 tutorial,選一個自己能看得下去的,然後認真地完成,並仔細地跟著裡面的實作練習,都可以好好上手、大大增加功力。

    找到適合自己的學習方式是學得最輕鬆、進步也最快!

    如果不知道該怎麼選擇教材,不妨想想自己『為什麼要學 Python』?

    只是單純想學新的程式語言、想利用網路爬蟲快速抓取資料、想做數據分析、想投入機器學習、想開發網頁應用程式、理財投資 …,從這個角度切入,也會比較有頭緒知道自己所需要的。

    要注意的是,Python 2 和 Python 3 有許多語法完全不同和不相容問題,現今大部分開發採用 Python 3 以後的版本,新手在學習前一定要好好確認所選教材。


    有什麼樣的工作機會

    前面提到,Python 的應用範圍非常廣泛,所以職缺當然也不少:

    • 與數據分析和人工智慧相關的就有 Data Analyst (數據分析師)、Data Engineer (數據工程師)、Data Scientist (資料科學家)
    • 與網站和應用程式開發有關的有前 / 後端工程師、遊戲開發工程師
    • 以及自動化測試工程師

    如果你本來就是做程式開發相關的工程師,熟悉 Python 會是你其中一個加分條件,畢竟現在 Big Data 和 AI 很夯,再加上許多平台(如 Google、Youtube、Facebook、Instagram …)利用 Python 開發。

    如果你想學寫程式來找工作,志向是當程式開發相關的工程師,我建議還是要學習 C、C++ 或 Java,因為 Python 真的太方便,太習慣用函式庫或套件反而容易缺乏訓練邏輯思維

    另外,還要考慮一個蠻現實的問題,目前在台灣,除非是新創公司,否則一般正規大公司,絕大多數還是以 C、C++、Java 為主,所以單靠精通 Python 要找到不錯且維持高薪的工作其實不容易


    結論

    本文整理並介紹了以下 7 個重點:(ps. 如果有漏掉都可以直接點擊標題連結回去看)

    1. Python 是什麼
    2. Python 的實務應用
    3. Python 的優點
    4. Python 的缺點
    5. 適合誰學習
    6. 怎麼開始學習
    7. 有什麼樣的工作機會

    Python 多功能、應用廣泛且方便,還能跨平台在任何類型環境中使用,如電腦應用程式、網頁開發、移動應用程式、硬體程式等,無論使用什麼平台,幾乎沒有效能損失的問題。

    Python 易學好上手,適合所有人學習並運用。不過,若想成為專業的程式開發工程師,除了學會善用 Python 的函式庫,真正應該學的是解決問題的思維

    雲端運算、機器學習與大數據分析是目前科技業最熱門的,它們幫助許多企業改變和優化工作流程,而機器人相關技術蓬勃發展,學習 Python 已成為未來趨勢之一。

    能用更少的程式碼達到同樣的結果

    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應