開始再戰 Python - 重新入門 - 工具篇
兩年前想摸摸 Python 的門道,簡要記錄了一篇我的 Python 快速入門,當時只覺得那是一種與 C/Java 異樣風格的程式語言,沒領會到特別之處。如今對 Python 的感受就不一般了,因為是雲服務,機器學習,人工知道大行其道的年代,所以更為急迫的想把它好好弄明白。
Python 3 說是設計的比 Python 2 要合理的多,所以沒有保持向後相容,現在初學 Python 對於選擇哪個版本的 Python 時沒有任何猶豫了,當然揀最新的 Python 3 學了。因此各種命令列工具都得用有 3 標記的,如 python3
, pip3
, pydoc3
。
程式語言特別是指令碼語言,簡單驗證或入門最需要一個 REPL
工具,這裡不論大型專案時最好選擇全功能型的 IDE,像 PyCharm 這樣的重型武器。在安裝 Python 3 後,它自帶了兩個,分別是 python3
和 idle3
(據說是 Integrated DeveLopment Environment 的縮寫詞, 可沒見這麼簡陋的 IDE)
Python
命令 python3
進到控制檯的 Python 互動介面,Python 標準的 >>>
提示符。沒有語法高亮,沒有自動縮排,唯一高階點的功能就是 tab
能對變數可以方法,屬性的自動完成。
別瞧它最簡陋,但它總是最起眼的,因為這是一個終端程式,Python 內建的,所以連線到伺服器最有效的就數它了。
IDLE
命令 idle3
將啟動一個 Tcl/Tk 寫的 UI,也是用的 >>>
提示符,有高亮語法顯示,自動縮排,帶簡單的除錯功能。對變數和常量按 tab
鍵都有智慧下拉提示。Mac OS 下 ctrl-p
, ctrl-n
上下命令間重複。
介紹完內建的兩個工具,還試試第三方的兩個增強版的 ipython
和 jupiter
.
IPython
需用 pip3 install ipython
進行安裝,啟動命令 ipython
,是一個控制檯程式,說明 ssh 遠端連線環境下也是可用的。不再是 >>>
提示符,還是像 In [1]
, Out [1]
(如果有輸出的情況下), In [2]
這樣遞進的提示。別看是個控制檯程式,語法高亮,自動縮排,智慧提示樣樣都有。 還內建了許有有用的功能和函式,還能執行 shell
命令
注意到 In[1], Out[1] 還是有意義的,當一個匿名變數時,就能夠用 Out[x] 重新引用到它。看上面的 100 + 99
沒指定變數名,它的值放到 Out[1]
中了,所以才能用 print(Out[1])
打印出它的值來。這很像 Scala 控制檯的 res1
, res2
這樣追蹤匿名變數的。
更多內容可以看這裡 ofollow,noindex" target="_blank">https://ipython.readthedocs.io/en/stable/interactive/tutorial.html
Jupyter
需要先安裝它,命令為 pip3 install jupyter
Jupyter QtConsole
執行命令 jupyter qtconsole
進行一個 QT 介面的 ipython。命令 ipython qtconsole
也行,但已不推薦使用。如果沒有安裝 QT 元件,必須先用 pip3 install pyqt5
安裝後再執行 jupyter qtconsole
。
Jupyter QtConsole
除擁有 ipython
所有功能外,在智慧提上有所增強,已經顯現出 IDE 的雛形
Jupyter Notebook
這個是我決定寫下這篇,對 IPython
稍加深入後的一個意外收穫,曾經隱約間見過,但不知其明,如今終於知道原來是 Jupyter Notebook
這個鬼東西。
要麼沒聽說 Jupyter Notebook
, 繼續懵懂,一旦接觸了就分外的驚喜。它居然是一個基於 Web 介面的,支援 40 多種程式語言的互動,並提供程式碼分享,建模,視覺化資料等等。
啟動 Jupyter Notebook 的命令很簡單,只要執行 jupyter notebook
,就會自動開啟預設的瀏覽器進到它的 Web UI,或者從控制檯拷貝提示的帶 token 的 URL 在別的瀏覽器中開啟。下面是選擇建立一個 Python 3 的 Notebook,對其他語言的支援還需作額外的元件安裝或設定。
對於 Python 3 以上相關工具的小結:
- 最快捷的方式應該還是 python3 控制檯,因內建的,能 SSH 遠端用
- 本地可以考慮用 ipython,控制檯還有語法高亮
- Jupyter Notebook 還是很值的玩味,比如對它的擴充套件使用,支援更多的語言和功能
- 另外在離線狀態下,多用用
help()
,dir()
,globals()
,locals()
等函式來檢視資訊