Python初學 — jupyter 介紹

新手友善的開發工具:Jupyter Notebook

Kiwi lee
10 min readApr 8, 2020

前言

通常在做資料分析或是畫圖,我們會習慣使用 jupyter 作為我們開發的工具,因為有以下幾個特點:

  1. Debug Fast: 它可以將程式碼一個區塊的慢慢執行,不需要每次都將整個程式跑過一遍,直到出現你要的結果,你可以反覆的修改執行在同一個地方,直接完成你想像中的功能。
  2. Display Easy: 在執行的過程,你可以輕鬆的查看過程中的變數,隨時監控結果。
Photo from http://jupyter.org/

3. Extension Huge: 因為 jupyter 建構在 HTML 上,因此可借用 javascript 的功能,簡單的擴充程式的互動及呈現,可參看 jupyter 的官方網站:http://jupyter.org/widgets

4. Support Good: 支援許多種檔案的轉換,除了 .py外,還可轉換成 html 檔放到自己的網站中。

因此這麼好的工具,如果你還不會使用的話,就太可惜了啊!

趕快來與我們一起學習這個工具的使用方法吧!

安裝

請參考 Python 初學第零講 — Python 安裝

如何開啟 jupyter

使用 anaconda 的朋友

若你是使用 anaconda,你可以使用 anaconda navigator 來使用 jupyter notebook

但因為用此方法開啟的 jupyter notebook,不太好調整儲存的位置,因此建議參考下方的開啟方法,會比較方便。

用 cmd/powershell 來開啟 jupyter notebook

若是你想要更快速更漂亮的開啟,可以使用 cmd/powershell 來開啟

  1. 進入你想要新增或載入 jupyter 的資料夾
  2. 對著空白處,按住 Shift 鍵,同時點擊滑鼠右鍵
  3. 選擇 “在這裡開啟 cmd/powershell 視窗”

4. 等待 cmd/powershell 視窗開啟

5. 在視窗中輸入 jupyter notebook,即可開啟

關閉 jupyter notebook

連續按兩次 “ctrl+c”

Jupyter 的檔案操作

新增檔案

  1. 點擊 “New”,並選擇 “python[conda root]"

2. 等待新分頁的開啟,新分頁即是新的檔案

兩種 kernel [conda root][default] 的差異
https://github.com/jupyter/notebook/issues/1850

儲存檔案

  • 方法 1: 點選 File,選擇 Save and Checkpoint
  • 方法 2: 直接按 “Ctrl+s” ,跟 microsoft word 一樣

修改檔名

  1. 點擊上面的名字,然後輸入你要修改的檔名

輸出成 .py 檔

關閉目前開啟的檔案

將沒用到的 jupyter,會釋放程式佔據的資源。

Jupyter 的編寫

因為 jupyter 可提供程式編輯及執行,所以 jupyter 有兩種模式,分別是編輯模式(綠色)及一般模式(藍色)。

模式的介紹及差異

  • 編輯模式:使用上下左右鍵在程式區塊內移動,並可以編打程式碼(若進入時,程式區塊旁顯示綠色)。
  • 一般模式:使用上下鍵選取不同的程式區塊,可執行程式區塊內的程式碼(若進入時,程式區塊旁顯示藍色)。

你可以在一般模式下,按下 “Enter“ 進入選取區塊並進行編輯,亦或是用滑鼠點擊想修改的程式碼。
在編輯模式下,想要跳回一般模式,可以按 “Esc” 來跳出。

一般模式下的操作

首先,程式碼寫完當然要執行了啊!特別注意的是, Jupyter 可以將整個 python 檔分區塊一一執行,可以不用一次就要跑完。將程式碼分成區塊,在區塊執行的中間查看目前的變數狀況,來協助程式的修正。所有稍早執行過的結果都會儲存起來,直到 kernel 關掉或重啟。

然後以下的快捷鍵全都要記起來啊!能不用手的工程師很帥!

程式區塊的執行

目前區塊,選取的區塊標記移到下個區塊

  • 按鈕: “Run” 直接按 “Run” 來執行選取區塊的程式,並移到下一個區塊。會看到 In [1] 代表這個區塊是第幾個被執行的區塊。
  • 快捷鍵: “shift + enter”

執行目前區塊,選取的區塊標記不移動

快捷鍵: “ctrl + enter”

中斷目前執行中的區塊

  • 按鈕: “正方形”
  • 快捷鍵: “ii” (連續按兩下 i)

程式區塊的操作

新增

在目前的區塊下方新增一個空的程式區塊

  • 按鈕:”+”
  • 快捷鍵:”b”

在目前的區塊上方新增一個空的程式區塊

  • 快捷鍵:”a”

刪除

刪除選取的的程式區塊

  • 按鈕: “剪刀”
  • 快捷鍵: “dd” (連續按兩下 d)

複製

  • 按鈕:請參考下方的 GIF
  • 快捷鍵: 按 “c” 來複製選取的區塊,(移動到你要貼上的地方),按 “v” 在目前的區塊下方貼上複製的區塊

合併

將下方的區塊與目前選取的區塊,合成一個新的區塊

  • 快捷鍵: “shift+m”

顯示行號

  • 快捷鍵:“l” (英文字母的 l)

分割(必須在編輯模式)

  • 快捷鍵: “ctrl + shift + -”

編輯模式下的快捷操作 (皆為快捷鍵)

  • 註解: “ctrl+/”
  • 縮排: “ctrl+[“
  • 反縮排: “ctrl+]”

Kernel 的操作

下面可看到可針對 Kernel 的操作,有 Interrupt (中斷目前程式進行)、三種 Restart、Reconnect、Shutdown 及 Change kernel。

Restart 重啟

遇到以下的狀況,建議重啟 Kernel

  • Cell 跑不出結果,一直顯示出 * 號。
    可能的原因有兩種,第一種是 input 卡住,這應該是各位目前最常遇到的,這主要是因為若在 jupyter kernel 進行中,沒有針對每一個 input 做輸入時,又再做 cell 的重覆執行或刪除時,就會發生既沒有 input 可供輸入,也一直跑不出結果來。至於第二種,系統仍在運行,計算過久或是陷入無限迴圈,皆有可能
  • 當 module 無法正常 import 進來時。通常發生在 module 在 kernel 進行時有更新的動作,這時就需要清理一下快取來重新 import。
  • 有三種不同的 Restart 方式
    - Restart:單純重啟 kernel,之前執行的結果都還留在 (即 output)
    - Restart & Clean Output:除了重啟 kernel 外,也順便把所有執行的結果清除掉
    - Restart & Run All:重啟 kernel 後,從最上面的 cell 從上到下依序執序。

Reconnect
基本上,把網頁關掉,不會清掉之前在該網頁所做的事情,包含所儲存使用的變數們,因此若重新開起網頁時,可以重連並繼續做事。但有時仍會發生被清掉狀況,所以還是用完再關吧。

Shutdown
就如同上方所說,網頁關掉不代表執行的結果也會立即清掉,這時你可以選擇點選 Shutdown 來正確的清掉目前的執行狀態。下面那張即是 shutdown 後,顯示 No kernel 的結果。

Change Kernel
顧名思義就是選擇目前這個 jupyter 檔案要使用的 python 環境。

畫面的介紹

引用自 https://jupyter-notebook.readthedocs.io/en/stable/notebook.html?highlight=reconnect#notebook-user-interface

上圖即是我們平常使用 jupyter 的樣子,但有時這樣很笨重,特別是在你已經熟記快捷鍵,不需要再去移動你的滑鼠去點選 Toolbar 。

工程師的浪漫,在於不用滑鼠,敲打著機械式鍵盤,一聲一聲的落下,快速跳動如彈鋼琴的手,望著 Power mode 的程式編輯器,猶如朕執掌天下,秋千萬世由我開啟。
Power mode

下方的 View 可以折疊隱藏資訊,讓你更專注在寫 code 上面。

將 Header 及 Toolbar 都關閉後,就會呈現如此輕爽的畫面 :)

結論

工欲善其事,必先利其器。熟悉自己使用的工具,加快每個小細節,就會有更多時間專注在 google 上面,可參看另一篇 用google來協助寫程式 (趁機宣傳之前寫的文章)。

僅注意的是,jupyter 的檔案使用起來較為麻煩,需要額外開啟 kernel 來執行做事,因此建議在初期程式開發時使用,待測試完功能無誤時,還是建議使用 .py 檔案來做之後的維護。

--

--

Kiwi lee
Kiwi lee

Written by Kiwi lee

Hi, I'm kiwi, Platform Engineer (SRE, DevOps). Python Engineer. Love art, books, longboard. https://kiwilee-blog.netlify.app/

Responses (2)