Github Copilot 加持下,我過了一大段不懂 Python 但卻能用 Python 寫複雜程式的神奇時光,但心中不踏實感日益加深。

尤其是 Copilot 吐了一段看不太懂的 Code,跑起來有問題,加多一些提示條件、換個問法又拿到另一段看不太懂的 Code 再試,就像一塊拼圖換過一塊塞進空格看是不是剛好,沒有設法找出問題來源的想法... 猛然驚醒,都寫了幾十年程式,你現在是在幹嘛?

thumbnail

球,不是這麼踢滴,程式也不該這樣寫。除非沒天分或厭惡寫程式,不打算擁有自己寫 Python 能力,覺得騎著裝輔助輪腳踏車環島也無妨。身為習武之人,如此輕忽朝夕相伴的兵器成為體統?

這陣子,我陸續找了一些 Python 線上教材,決心從頭蹲馬步打好 Python 基礎,別讓 Copilot 笑我廢。

這個 Python 新手筆記系列,我會整理自己學習 Python 的重點筆記(從資深 C# 開發者的視角),以下的教學資源有完整解說,筆記僅整理重點跟關鍵字備忘。

線上教學資源

以下是我找到的幾個線上教學資源:

  • Python 技術手冊 by 良格葛
    手冊幾乎是對 Python 語言規範做完一次巡禮,完整度直逼教科書等級,涵蓋你該知道的 Python 語言特性及特色。
    每個章節的篇幅都不長,範例很強,短短幾行展示完語言特性及行為差異,知識吸收上特別有效率,堪稱 Python 語言濃縮精華液。
    但也因資訊純度較高,有些地方需要讀者有程式開發背景才易消化。特別適合已具其他程式語言開發經驗,想在短時間內奠定 Python 基礎的同學。

  • 為你自己學 PYTHON by 高見龍
    龍哥不久前剛釋出的 CC BY-NC-SA 授權電子書(時機恰到好處,有天上掉餡餅的感覺 XD)。
    沿續為自己學 Git 的風格,全書十分輕鬆好讀,講解簡單易懂,並完整涵蓋開發 Python 需要知道的細節及實務技巧。
    電子書排版看起來非常舒服,並有許多對了解 Python 沒啥幫助的精美插畫,美到讓人讚嘆。我只能說,要做出好看電子書也是講天分的。
    這部教學很適合零程式經驗的白紙新手(源要寫給唸國中的小朋友看),老鳥用它學習 Python 也沒有任何問題,讀來相對輕鬆,算是快快樂樂學 Python。

  • 政大磨課師課程 / 成為python數據分析達人-的第一門課 by 蔡炎龍
    之前上過蔡炎龍老師的 Python 實現人工智慧,這套課程則從基礎的 Python 語法出發,重點聚焦於 Numpy、Pandas、線性迴歸、機器學習的實務應用,跟「為你自己學 PYTHON」以 VSCode 為主不同,課程重度依賴 Jupyter Notebook 及 Colab,包含大量數據分析演練,剛好補足不同的 Python 開發經驗。

環境安裝

  • Python 版本眾多(目前最新的正式版是 3.12.6),有些程式可能需要特定的 Python 版本(舊程式甚至可能要用 2.X 跑),要在同一台主機同時安裝多個 Python 版本,可使用 pyenv。(Anaconda 也是解決方案,但笨重一些)
    pyenv update # pyenv-win 安裝後記得更新才會看到新版 Python
    pyenv versions # 列舉已安裝版本
    pyenv list -l # 列舉可安裝版本
    pyenv install 3.12.4 # 安裝
    pyenv shell 3.12.4 # 切換
    pyenv global 3.12.4 # 設定預設版本
    
    註1:若曾用 Chocolatey 安裝及解除安裝 Python,殘留的 C:\ProgramData\Chocolatey\bin\python*.exe 跟 pyenv 打架,可 DEL C:\ProgramData\Chocolatey\bin\python*.exe 參考
    註2:pyenv-win 主要透過 C:\Users\jeffrey\.pyenv\pyenv-win\shims\python.bat 啟動目前的 Python 版本,呼叫 Python.exe 可能會執行到非 pyenv 安裝來源。
  • IDE:PyCharm(商業軟體)、Google Colab、Jupyter Notebook、VSCode (筆記本的話我偏好用微軟的 Polyglot Notebooks,還可通吃 PowerShell、JavaScript、HTML、Mermaid、SQL)
  • VSCode 推薦套件:Pylance (隨 Python 主套件自動安裝,Syntax Highlight/Intellisense)、Black Formatter (自動排版)
  • 單純執行 python.exe 會進入輸入指令按 Enter 看結果的環境,術語為 REPL (Read-Eval-Print Loop)
  • 套件安裝工具 pip
    pip list
    pip install requests
    pip uninstall reqeusts
    
  • venv - Python 內建模組,可建立多個虛擬環境,每個環境可安裝自己的套件組合,避免專案共用套件時因需求版號不同打架
    python -m venv demo --prompt="DemoVenv"
    demo\Scripts\Activate.ps1 # PowerShell
    # demo\Scripts\activate.bat # CMD
    
  • Poetry - 比 venv 功能更強大,並提供完整套件管理功能(打包,發佈),能顯示相依樹狀關聯、移除相依套件,推薦在專案裡啟用 Poetry 虛擬環境更容易管理
    (複雜度較高,待未來用到再深入)

套件版號之語意化版本管理

開源界有一套不成文的版號編碼規則:主版號(Major).次版號(Minor).修訂版號(Patch)

而 Python 本身及套件多半也遵循這套語意化版本管理(Semantic Versioning)的江湖規矩:

  • 修訂版號增加只修 Bug,無相容問題。
  • 次板號增加可加新功能,但與之前相容,升級不會出事。
  • 主版號異動為大修改,很可能不相容。

之前常在 npm 常看到 ^、~ 等版本相容標示,其用法如下:

  • ^5.0.3 - 允許 5.1.0 這種次版號不同的新版本
  • ~5.0.3 - 允許修訂版號更新的版本,如 5.0.4 或 5.0.999
  • ==5.0.3 - 必須一模一樣,不接受其他版本
  • >=5.0.3 - 比 5.0.3 高的都可以,包含 6.0.0
    (你無法預期新版會有什麼變化,是否還相容,實務上幾乎沒人敢這麼做)

I reflect on relying too much on GitHub Copilot for Python coding without understanding the code. I decided to solidify their Python skills by using various online resources, focusing on foundational learning and proper coding practices. The post also shares Python setup tips, including using pyenv for managing multiple Python versions and recommended IDEs and tools.


Comments

# by Hank

現在沒改用 Cursor 麼 XD

# by twboy

謝謝推薦,最近也在學 Python 蠻喜歡高見龍的教學安排方式 正在拜讀中

Post a comment