Python 程式設計 - 中階

適度用 Python 海象運算子提高程式碼可讀性與簡潔

Python 3.8 推出 1 個新的運算子 — Walrus Operator, 又稱海象運算子,其運算符號為 :=

Python 社群對海象運算子有一些爭議,主要是:

  1. 海象這個名稱不夠明白、直覺,無法讓人直接從名稱了解其用途
  2. 無法向下相容,如果你是套件開發者,用了海象運算子就會有 3.8 以前的相容問題要解決
  3. :== 符號太相似,難以快速識別

但無論其爭議為何,海象運算子只用 1 個新的符號,就能使程式碼變得簡潔之外,還能同時滿足 Python 使用者的習慣,長遠來看其實是利大於弊。

譬如下列程式碼,在使用海象運算子之後,其實只需要 2 行即可:

x = input('> ')
while x:
    print(x)
    x = input('> ')

因此,學會適度使用海象運算子是可以帶來好處的!

本文將介紹海象運算子與幾個適合使用海象運算子的場景。

Posted on  Apr 23, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

領域展開!用 Google Colab, JupySQL, DuckDB 實戰分析數據

談到 Python 數據分析的工具,多數人應該使用 Jupyter Notebook 搭配 pandas 進行數據分析,不過使用 pandas 還是不及使用 SQL 來得直覺一些,如果能夠在 Jupyter Notebook 中直接使用 SQL 對資料進行查詢、分析,對於精通 SQL 的人而言,將會減少需要額外學習 pandas 的成本。

恰好 JupySQL 是 1 個能夠讓我們在 Jupyter 以 SQL 對資料進行查詢、分析的擴充套件(extension),而且 JupySQL 也整合 pandas, 因此可以將查詢結果轉換成為 pandas 的 DataFrame, 除此之外更整合 DuckDB, SQLite, MySQL, PostgreSQL 等常見資料庫,讓我們能夠輕鬆以 SQL 操作各種不同來源的資料庫。

本文將以 Google Colab 搭配 JupySQL 與 DuckDB, 帶你學習 Jupyter Notebook + pandas 之外的另一種方法!

Posted on  Apr 9, 2024  in  Python 模組/套件推薦 , Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

Python 效能之鬼!你應該學會使用的 deque !

程式的效能並不是天生具備,而是榨出來的,特別是對於 Python 這門程式語言而言,如果想要做到 High Performance 的話,有些魔鬼就藏在細節裡。

舉常見的 list 為例,你知道 list 在執行 pop(0)insert(0, value) 是效率較差的嗎?如果你的應用必須經常呼叫 pop(0)insert(0, value) 的話,建議你換個資料結構吧!使用 deque 將會帶來效率的提升!

本文將帶你認識 Python 的 deque 以及它在何種特定情況下能夠帶來效率的提升!

Posted on  Apr 1, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 4 min read

如何在終端機(terminal)漂亮地平行列印文字訊息(parallel output)?

在使用 multiprocessing, threading 等模組跑平行處理時,如果需要在每個執行單位(process, thread)列印一些字串的話,你會怎麼做?

我想大多數人都直接 print() 到 terminal 就好,但是輸出的文字太多太長時,通常都沒有太大助益,這時候最好將輸出寫到檔案,一旦有問題就可以從檔案中尋找問題。

但是,我們多數時候還是想知道執行單位最新的運作狀態,例如正在執行哪個步驟,這些輸出一直附加到 terminal 上的話,不免還是會讓 terminal 顯得難看⋯⋯。

因此,本文將介紹 1 種方法讓平行處理的輸出可以清掉舊的輸出(output),並覆蓋新的輸出(output)上去,如此一來不僅可以知道每個執行單位的最新狀況,還可以讓 terminal 顯得乾淨、優雅!

Posted on  Mar 13, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 2 min read

資安宣導 — 用 secure_filename 強化檔案上傳的安全

現代很多應用都需要實作檔案上傳的功能,例如上傳使用者圖像、上傳 CSV 表格等等,不過檔案上傳也是很容易造成資安漏洞的一項功能,一旦寫得不好,就會給惡意人士製造機會入侵系統,甚至成為散佈惡意軟體的中繼站。

本文將說明 1 個檔案上傳功能的資安問題以及如何進行防禦。

Posted on  Jan 18, 2024  in  Python 程式設計 - 中階 , Python 資訊安全  by  Amo Chen  ‐ 2 min read