用 Pickle 寫程式是否搞錯了什麼?

splitline

splitline

我是 splitline,一位隨處可見的魔化異能行者。

  • Intro
  • More Info
  • Slido
  • Note

Abstract

在本議程中,我們會深度剖析 Pickle 序列化格式,以告訴大家——「沒錯,你其實可以用 Pickle 格式寫程式」。同時,也藉此概念設計出一個能將 Python 原始碼轉換為 Pickle 格式的(無用)編譯器。最後也會簡單講述實務上使用 Pickle 應注意的資訊安全事項。

Description

正如同官方文件所述,Python 中的 Pickle 是一個用於將 Python 物件(例如,列表、字典、類等)序列化和反序列化的模組與格式。但等等,你說寫程式?騙人的吧。序列化資料怎麼能用來寫程式?

是的,pickle 格式其實可以是一種簡易的程式語言。

話說回來,Pickle 縱然是在 Python 中存在已久的序列化格式,但又有多少人真正了解其背後的原理呢?本議程將從 pickle 指令碼的能力與行為,帶您深入剖析 pickle 原理;另一方面,也會藉此說明我們是如何藉此利(濫)用 pickle 的特性搭配各種 Python 技巧,製作出一個將 Python 原始碼編譯為 Pickle 位元組碼的編譯器 —— Pickora。最後,既然提到 pickle,也會不免俗地提到在實務上使用 pickle 時該注意的資訊安全議題。

希望大家聽完本議程能對 pickle 能有更深入的理解(並獲得一些在現實中或許相當無用的奇技淫巧)。