Last Updated on 2022-08-27 by Jeslyn
隨著大數據、人工智慧的發展越來越盛行,使得最常用來開發相關技術的 Python 程式語言在近幾年高速成長並日漸普及,其好入門、易上手的特性,讓新手不管有沒有資工、程式背景都能輕易駕馭。
而 Python 是什麼?為什麼這麼熱門?你也對 Python 有興趣嗎?
如果你是個初學者,一定要好好看完這篇 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 自動爬網頁抓報表,初學者必看的簡單教學

※ 除了前面舉例的幾個函式庫,在這裡補充幾個其他常用的函式庫,將它們統整成表格如下:
函式庫名稱 | 適用於 |
Pandas | 數據操作與處理 |
Matplotib | 繪製圖表 |
OpenCV | 電腦視覺 |
Plotly | 視覺化互動圖表 |
Django、Weppy、Bottle、Flask | 服務器端 Web 開發 |
Selenium | 網頁爬蟲、自動化測試 |
BeautifulSoup | 解析 HTML 和 XML |
SciPy | 工程應用、科學和數學 |
NumPy | 科學計算 |
TensorFlow、Keras、Torch | 深度學習 |
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 太方便會讓人習慣都用函式庫或套件,很容易忽略、沒有完整理解整個程式運作邏輯,將來遇到需要客製化時容易不知所措。
延伸閱讀 1:學程式應具備的心態是什麼?
延伸閱讀 2:當我們在學程式時,要學的到底是什麼?
怎麼開始學習
由於 Python 日趨熱門與普及,學習資源相當多元,不管是書籍,還是實體課程、線上課程等,只要 Google 下好關鍵字,就能搜尋到許多有幫助的資訊。
以下推薦適合剛入門、還沒有基礎的初學者:
推薦書籍
- 深入淺出Python
- Python零基礎學程式設計與運算思維:王者歸來
- 精通 Python:運用簡單的套件進行現代運算
- Python入門教室:8堂基礎課程+程式範例練習,一次學會Python的原理概念、基本語法、實作應用
推薦線上課程
免費線上開放課程或資源:
付費線上課程:
ps. 比起付費課程,免費課程如果有任何問題,需要自己想辦法找答案,實作練習也沒有老師或助教可以請教與實際指導。
Github
Tutorial
無論是書、課程、Github 或 tutorial,選一個自己能看得下去的,然後認真地完成,並仔細地跟著裡面的實作練習,都可以好好上手、大大增加功力。
找到適合自己的學習方式是學得最輕鬆、進步也最快!
如果不知道該怎麼選擇教材,不妨想想自己『為什麼要學 Python』?
只是單純想學新的程式語言、想利用網路爬蟲快速抓取資料、想做數據分析、想投入機器學習、想開發網頁應用程式、理財投資 …,從這個角度切入,也會比較有頭緒知道自己所需要的。
要注意的是,Python 2 和 Python 3 有許多語法完全不同和不相容問題,現今大部分開發採用 Python 3 以後的版本,新手在學習前一定要好好確認所選教材。
延伸文章:想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?

延伸文章:10 個推薦 Python 新手用來幫助學習 Coding 的 YouTube 頻道

有什麼樣的工作機會
前面提到,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. 如果有漏掉都可以直接點擊標題連結回去看)
Python 多功能、應用廣泛且方便,還能跨平台在任何類型環境中使用,如電腦應用程式、網頁開發、移動應用程式、硬體程式等,無論使用什麼平台,幾乎沒有效能損失的問題。
Python 易學好上手,適合所有人學習並運用。不過,若想成為專業的程式開發工程師,除了學會善用 Python 的函式庫,真正應該學的是解決問題的思維。
雲端運算、機器學習與大數據分析是目前科技業最熱門的,它們幫助許多企業改變和優化工作流程,而機器人相關技術蓬勃發展,學習 Python 已成為未來趨勢之一。
※ 更多文章:

Plotly 好用嗎?Python Plotly 資料視覺化 & 圖表互動的必備利器,新手必學懶人包
如果覺得這篇文章有幫助,請幫我拍手 5 下鼓勵我、支持我,讓我繼續有創作的動力!
如果有任何問題或想分享的資訊,歡迎在下方留言!
請問:
1)如果是 45歲左右的 法律界人士(律師,法官)
學習python 是否有實務上的幫助?
2)如果 都沒有 程度設計的基礎
請容我幼稚的問
是否 要先學會:scratch, C, C++, …?
先謝謝你的耐心解答
1) 如果你常常會做到一些邏輯不難、但需要重複多次又花時間的事,而且不是那種『人』需要佔很大成分的工作(如:諮商、藝術創造等等就不適合),其實都可以考慮寫程式解決。
舉我自己的例子:我的工作之一是需要每天幫客戶從網路上蒐集資料並依關鍵字分類、歸納,這件事情雖然簡單,可是如果我手動一個一個點進 30 幾個網站把內容複製下來整理,必須要花將近 1 天的時間才能做完,這樣就沒辦法做其他比較重要的工作。
所以,我把每一個手動的步驟拆解成『抓資料』=>『去掉內容中不重要的贅字』=>『抓出關鍵字』,針對每個步驟寫程式去處理且銜接,然後設定排程讓它固定時間自動執行,我每天只需要花 20 分鐘確認關鍵字,看看每個步驟產出的結果(可能有時候出現一些奇怪的關鍵字需要濾掉、或偶爾會遇到網站改版等情況要修改程式)。
當然,一開始不一定要從(上例)這麼複雜的做起,像『每天 9 點把報表發 email 給客戶』這類小事,我也寫了段 python 自動執行。
因為我對法律界的工作不熟,但我可以想像,也許會有分類案件、追蹤判決、隨時掌握法規變動資訊、定期回報等這些不像開庭那種『人』一定要出現的工作,只要重複性高又按照固定規則,做起來覺得不需燒腦的事,都能試著寫程式幫助自己節省時間。
不一定要是『大』事,可以從『小』事著手!
2) 關於「是否 要先學會:scratch, C, C++, …?」,我的回答是”不用”!
這問題有點像是「我要學英文,是否要先學會西班牙文、法文 …?」
類似學習一般語言的概念,不同人種之間需要不同語言溝通,只是表達方式不同,而『程式語言的基礎邏輯幾乎都相通』,你不過是在使用一個非母語的語言跟電腦溝通,只是看你選擇哪一種語言,所以沒有你想的那麼繁瑣困難!
ps. Scratch 是讓程式設計初學者可以不用先學習語言語法,就能設計專案的工具。如果你想先單純學習邏輯程式設計、數學和計算知識,Scratch 是不錯的選擇!
希望這些回答能真正對你有幫助,如果還有不懂的地方歡迎再提問!^_^