1240 字
6 分鐘
【Python】對 Python 的初步認識
久違地碰了一兩天 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、社群越來越大後,網路上的分享和問答就會變多、進一步也有更多大神做更多好用的套件,形成良性的循環。
參考資料
- ChatGPT
- [Python資料科學]pandas基礎介紹-進入資料科學的領域 - Python Everywhere -from Beginner to Advanced - Medium
- 使用 Anaconda - Python 教學 | STEAM 教育學習網
- Python 虛擬環境—venv - DEV Community
- Day 04 Python 進階 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- Python 理財程式小技巧 – 超重要的 Python 推薦命名習慣 - 量化通 QuantPass
- Day 23 : Tkinter-利用Python建立GUI(基本操作及佈局篇) - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- 麻瓜走入魔法世界 I — Gradio. Gradio, present your ideas swiftly. | by Yvshih | Medium
- chardet - Python教程 - 廖雪峰的官方网站
- 【Day 09】- 大家都愛的 BeautifulSoup - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天