Python 全攻略第 0 章 Class Preparation & Introduction to Python 課程筆記

第 0 章 Class Preparation & Introduction to Python

什麼是 Python?

為什麼要學習 Python?

  • 程式語法可讀性高,易於上手。
    • Java
int tmp = var1;
var1 = var2;
var2 = tmp;
  • Python:
var2, var1 = var1, var2
  • Python 支援的應用模組很豐富,舉凡 for 數據處理的 Pandas;for 網站建置的 Flask;或是鼎鼎大名 for 網路爬蟲的 selenium or beautifulsoup 等等。要開發應用,站在巨人的肩膀上更容易~
  • Python 也是能跨越不同平台的語言,不論硬體是 x86、ARM 或其他單晶片(Micropython),又作業系統或是 Windows, MAC 或 Linux,都有 Python 的程式家族能夠支援~
  • 目前我們最常用的 Python 其實是 CPython (它的base是以 C 語言所寫成的) → 對比之前,微軟曾開發過另一個 Python 家族 - iron python,它的基底則是 C# 寫成的,但後來微軟已宣布終止計畫停更。

Python 的缺點

  • Python 因為是 JIT 直譯式,相較編譯式程式語言,在執行效率上會比較慢 → 為何直譯式會比較慢可參考這篇說明
    • 但其實 Python 從 3.10 起,就逐版在調整執行效能 → Python之父近期重大宣布,CPython執行速度4年內將翻5倍
    • 再加上 CPU 的效能不論是 X64 或 ARM,硬體運算速度也是越來越快,也因此讓 Python 受歡迎程度跳躍式爬升,現在已經霸榜蟬聯第一名好幾個月~
    • 感謝 Howard 兄提醒,其實有另一個 python 分支,是由Swift 語言創始人Chris Lattner,所共同創立的新創公司 Modular AI,在2023年5月發布了一個高效能 Python 程式語言 - Mojo,Modular AI 公司官方提到,因為Mojo結合了動態和靜態語言的優點,效能可達到 Python(CPython) 的 68,000倍。(摘自: iTHome - 執行速度可達 Python 68,000倍的 AI 語言 Mojo…
  • 雖然在單晶片上有 Micropython 能支援,但行動運算方面,Python 一直都不是主流語言,這也讓 Python 的發揮受到一些侷限。

Python 學習的進程

如何學習 Python

  • 學程式語言,最重要的第一個要先架好程式環境,然後多做多錯多學~ (多實作,做錯了,能解析錯在哪裡,然後修正,從錯誤中學習)

  • 因此學習 Python 首要工作就是先架設好環境,關於架設部分,可以參考 Wilson 老師在 2-6 與 2-7 上的教學影片解說,Wilson 老師在視頻教學示範的安裝方式是使用 anaconda 套件安裝方式。

  • 但如果是對 python 完全零經驗的初學者,和 anaconda 相比,其實我個人更推薦只單純下載 python runtime 下來安裝,關於純用 python runtime 安裝部分,我找了一個視頻和一篇文章,以下是相關的連結:

  • 這裡重要的提醒一點,如果你選用單用 Python Runtime 安裝,要注意你在 Python 安裝精靈(Installation Wizard)介面引導下,選用的安裝方式是選擇 current user (預設),還是 alluser,這兩個安裝方式,會導致 python 安裝到不同的地方,如果是前者,你的 python runtime 路徑是在 %LocalAppData%\Programs\Python\Python312 路徑下,但如果你是安裝到 alluser,那麼 python runtime 的路徑則是會跑到 %ProgramFiles%\Python312 這個路徑下(如果你是安裝 64 位元,如果是 32 位元,且為 alluser 方式安裝,則會跑到%ProgramFiles(x86)%\Python312 路徑下),這是以目前 Python 最新穩定版 3.12.1 來列舉。 而 Python Runtime 部分的安裝檔,大家可以來 Python 官網 這裡下載,之所以要說是重要提醒,是因為往後 如果你發現你程式跑的時候,明明有安裝 Library 或 Module 但是程式執行卻跳出少了 Library/Module 的例外,又或是找不到 Python.exe 無法執行這類的錯誤,基本上就是你的系統環境變數的全域路徑變數配置上少了 Python Runtime 的路徑配置 ,如果聽不懂我在說什麼,沒關係,可以來看看這篇 Python 設定環境變數的教學,連結如下: Python:安裝 python 並且添加環境變數

  • 為何我會推薦 Python 小白,改只單純 Python Runtime,而不要透過 Anaconda 套件來安裝,其實我個人不是太喜歡 Anaconda,Anaconda 是一個程式環境管理套件,它內容包含了不單單只是 Python Runtime,還有很多其他常被拿來一起安裝的套件,例如一些 Maching Learning,雖然它簡化了 python runtime 的安裝,但也因為它屏蔽了很多的安裝程序,反而導致了很多初學者在日後安裝或升級套件時,常因不了解而迷失在環境設定問題上,比方說裝了不同版的 python,在寫程式時,要安裝套件的時候,其實不知道自己把套件安裝在別版的 python 上,導致了真正執行的 python 版本,程式上少了必要套件而出錯無法執行。對比之下,從 Python.org 安裝的 python runtime 就是一個乾淨,不含其他不相關的套件安裝的 runtime,你可以透過這樣的簡單安裝,了解整個 python runtime 的執行架構,從而能減少很多環境設定上的問題。

  • 另一個一勞永逸,解決初學者 Python 執行環境的方式是使用 Thonny,Thonny 是我最初接觸 Python 時在上 Dr.Angella Yu 在 Udemmy 開的 Python 百日馬課程,這位老師所推薦的工具,它是一套已經內含 Python Runtime 的 IDE 工具,更棒的是,即便你要安裝 Python 的第三方套件,它有自帶介面,讓初學者的你,很方便的就把套件安裝起來,甚至由於它是封閉環境,因此它不會和你作業系統上安裝的 Python 或 Anaconda 環境相干擾。它唯一不算缺點的缺點就是它自帶的 Python Runtime 環境更新的不是很快,目前最新版的 v4.1.4版只有支援到 python 3.10 (目前 python.org 發佈的最新穩定版已經到 3.12.1 版)


  • 這裡也順便介紹一下,目前支援 python 程式撰寫偵錯的幾套 IDE 工具:

    • 首先是大名鼎鼎的 Jetbrain Pycharm : 這套工具把 Python 程式的撰寫環境整合的很棒,偵錯及引用套件都相當便捷,甚至新版已內建 AI 功能,能幫助你產 code,缺點是全功能版必須要專業版才有,不過如果你是教師或學生的話,可以通過證件影本及學校的 email 申請免費的專業版使用。
    • 再則是越來越受歡迎的 Microsoft Visual Studio Code ,這也是我目前開發程式的主力 IDE,不僅免費,而且有很豐富的延伸套件,能支援各類程式語言的撰寫開發。
    • 如以 IDE 角度來看的話, thonny 也算一套 IDE 工具,優缺點前面已經提過,就不贅述了~
    • 當然你也可以使用線上的 python ide 來學習寫 python 程式,特別是如果你是常跑外面,且因為一些緣故,不喜歡帶筆電的人,可透過這種方式,在任何行動裝置上寫 python,線上 ide 的缺點是無法儲存,以及套件的安裝支援較缺乏,例如: Online Python Compiler (Interpreter)

Python 學習的輔助工具

  • 筆記工具: 學習過程,不免需要把一些教材上的重點以及自己體會到的經驗與心得做個記錄,目前筆記工具已從離線進步到線上,例如老牌的 EverNote、或 Notion、OneNote、新崛起 Obsidian 等等,品牌繁多,不過因為篇幅關係,這裡我先只針對我用過,覺得好用的筆記工具來做個簡單的介紹。

    • Notion: 雖然 Notion 出來之前,我個人其實已經使用 EverNote 多年,但這裡我更推薦大家使用 Notion 這個筆記工具,它同樣是一個跨平台的線上筆記工具,不論是 Windows, Mac, Linux, Android 或 iOS 都有支援,而且它的筆記功能很強大,支援大部份的 Markdown 語法,具備各 MD 內嵌的語法功(這也是目前老牌 EverNote 的弱項),例如: 程式碼區塊、表格、影片、圖片、網頁、PDF 等等,甚至還有內建的簡報功能,讓你可以把筆記直接轉成簡報,而且它的筆記可以分享給其他人,讓你可以和其他人一起協作編輯,甚至還有內建的簡易版 Git 功能,讓你可以把筆記當作一個簡易的 Git 筆記本,這樣你就可以把筆記分享給其他人,讓其他人可以看到你的筆記,甚至可以一起協作編輯,而且它的筆記本還可以設定成公開或私人,讓你可以自由控制筆記的分享權限,是學習上不錯的幫手。
    • VSCODE / JupyterNotebook: 如果你想離線做筆記的話,我個人很推薦使用 Visual Studio Code 的 JupyterNotebook 功能,因為JupyterNotebook 暨支援 Markdown 語法,而 code block 部分又能live執行python程式碼,讓你可以在同一個筆記本上,同時記錄筆記及執行程式碼,非常方便。
  • 可善用 ChtGpt 來教你 python。

  • IDE 上,不論是 pycharm 或 VS code 都有支援的 Github Copilot 套件。
    Copilot Generation Code Demo

  • 最後一個是我很推薦的 Python Exexution Visualizer 執行視覺化網站: 我最先是經由 Studycamp Discord 論壇版大 sky 兄推薦而知道這個工具的,這個工具可以讓我們把要執行或分析的 python 程式碼貼到面板上,然後透過面板的執行,在旁邊的視圖介面一步步地以流程視覺方式呈現執行過程的工具,網址在這裡
    python execution visualizer demo

  • Python 官方文件 → 所有學習或使用 python 的人,一定要時常參考的網站,學會如何看懂語法,很重要~

  • Python PEP 文件 → 所有學習或使用 python 的人,會時常參考的另一個網站,幫助你寫出更棒更優雅的 Python 程式~

  • pypi.org 網站,為何說這個網站是絕佳的學習輔助工具,因為 這裡就像 Github 一樣,可以查詢很多 python module,並能將這些 module 下載下來欣賞別人寫好的程式碼 ,比方說,如果你要寫一個股票爬蟲,你除了從 beautifulsoup4 或 selenium 從頭硬刻之外,也可以參考別人寫好的模組程式碼來進行修改,比方說如果是股票爬蟲,我可能會想參考 yahoo-finance-scraper 這支程式碼,當然 如果你是有 商業目的 的話,最好還得多注意程式碼授權方式等問題 ,但這樣的方式,讓你直接站在巨人肩膀上,有助於讓你加速了解某類程式的架構。

  • 幾篇別人整理的 for 學習 Python 程式語言的心智圖 (我之前在 Studycamp 論壇上有分享過的 Python 學習資源)。



  • Python Tutorial | Learn Python Programming - GeeksforGeeks → 這是我之前學習 python 道路上時常參考的一個網站,對於一些 python 語法的解釋,範例講解暨簡潔又清楚。

  • Python一週入門教程 | 圖靈星球/程序員以諾 → 上一門 Design Pattern 共學課程意外發現的一個學習資源,裡面有各類含 Python 語言的豐富學習資源。

  • MathByte Academy → 這個是另一個 sky 兄推的 Udemy Python Foundamentals 課程的主講者 Dr. Fred 開設的 Youtube Python 學習頻道

2 Likes

這篇雖然標題看起來是想介紹Mojo,但內容倒是講解了不少Python在性能上的一些缺點和侷限性

1 Like

針對昨天上課,我把單安裝 Python Runtime 的相關程序及理由,再補充進來,早期我還是 Python 小白時,也被環境變數問題困擾過,這幾乎是在 Python 相關論壇或 StackOverFlow 上,佔大多數的 Python Begineer 常被困擾的問題,只要打通這一關,其實後面的 Python 學習,基本上以電競術語來說,就是無痛打怪,專心練級即可慢慢的進步上去。希望以我的經驗,能提供大家一些學習上的幫助,一起在 Python 學習道路上加油~

2 Likes