1240 字
6 分鐘
【Python】對 Python 的初步認識
2025-01-21

  久違地碰了一兩天 Python,記錄一些對它的初步認識。
  滿多項的,但各項的篇幅都有點難獨立為一篇文章,於是一起整理在這篇。

Anaconda 是什麼?#

  • Python 懶人包,只要安裝 Anaconda、就一併安裝了一堆常用的開發工具與套件
  • 也能透過它管理 Python 版本、虛擬環境
  • 但也因此日趨肥大,佔很多容量

套件管理器:pip#

  • 預設下載路徑在 (Python 根目錄)\Lib\site-packages\
  • 為什麼在 Python 根目錄下、換版本就得另外下載?
    • pip install 時,會根據目前的 Python 版本尋找對應的套件版本,所以下載下來的不能跨版本使用
    • 這點和 Java 的 Maven 很不一樣
      • pom.xml 的 dependency 要指定版本,不指定的話會找最新版
      • 並不會根據目前使用的 Java 版本而使用不同的 library 版本
      • 我猜可能跟 Java 是編譯式、而 Python 是直譯式有關?

Jupyter Notebook 與 ipynb 檔是什麼?#

  • 這是一個互動式的 Python 筆記工具,副檔名為 ipynb
  • 每個 cell 可以選用 code 或是 markdown
  • 每個 code cell 可以分別執行
  • 適合用於測試每段程式碼的結果、或是像抓資料等片段式的需求
  • 底層是 JSON 格式,會記錄每個 cell 的資訊,比如是哪一種、執行了幾次、執行結果為何等等。
  • 不用 print() 就能顯示變數的內容,甚至如 pandas 的 dataframe 還能以表格顯示。

虛擬環境#

  • 可以建立一個虛擬環境,裡面會有獨立的 Python、pip 下載目錄,就不會和本機環境衝突
  • 可以透過 CLI 建立、進入與退出虛擬環境
  • VSCode 在 Python 模式下,點擊右下角的版本號那一格、上方就會跳出,可以方便地新增或切換虛擬環境
  • 建議在每個 Python 專案都使用獨立的虛擬環境

語法不同#

  • 沒有 null、而是 None
  • 換行、縮排很重要
  • : 加下行多一格縮排開啟下個階層,如 class、function 或 method、迴圈皆如此

命名原則#

  • 檔名、變數、function 名、method 名:snake_case
  • 常數:全大寫的 SNAKE_CASE
  • class 名:CamelCase
  • 特殊的變數或 method 名:前後各兩個下底線,如 __init__()

GUI 套件#

  • Tkinter
    • Python 內建的(說是內建,要記得在安裝 Python 時勾選啦)
    • 滿陽春的,給我的感覺像 Java 的 Swing
  • Gradio
    • 網頁式的 GUI
    • 基本帶有一邊輸入欄位、一邊輸出結果
    • 常用於作為機器學習模型的互動介面

好用或有趣的套件#

  • pandas
    • 資料處理與分析用
    • 有 dataframe 型式的資料結構
  • chardet
    • 自動判斷資料內容使用的編碼
    • 雖然不完全準確,不過還提供了「準確率」這個回傳值可參考
    • 我之前用 Java 寫編碼轉換工具就是缺這個啊……
  • requests
    • 發送 HTTP 的 request、接收 response
    • 指定 URL、指定 method、帶 headers 和 body 等等都可以做到
  • BeautifulSoup
    • 解析 HTML 或是 XML 格式的資料
  • Selenium
    • 透過 Driver 自動操作瀏覽器

為什麼 Python 被推薦用於爬蟲?#

  逛了一圈,我覺得相較於 Java,Python 在這方面的強項主要的原因在於「易寫易跑」以及「套件豐富」。

  Python 本來就是直譯式腳本語言,可以單純地執行;甚至即使沒有 IDE,只用文字編輯器寫好、再進 cmd 執行都算方便。相對的,Java 要先寫個 class、再寫個 main method,寫完還要 compile、才能執行,的確步驟比較繁瑣。
  另外,有了 Jupyter Notebook,試錯開發兼做筆記變得方便許多。

  而不曉得是因還是果,總之現在的 Python 生態系裡有許多好用的套件,request、BeautifulSoup、Selenium 等等使爬取網站上的資料簡單多了,另外還有 pandas 這樣的套件可以接續整理資料。
  越來越多人使用 Python、社群越來越大後,網路上的分享和問答就會變多、進一步也有更多大神做更多好用的套件,形成良性的循環。

參考資料#

延伸閱讀#