這篇主要想與對Python已經有些基礎的人分享,因為是時候後拆掉輔助輪了;當你想騎得更快,輔助輪只會阻礙你。
只要做數據分析、AI有關的項目,目前最火紅的程式語言當屬Python了。
而網路上許多的入門教學第一件事情就是告訴你安裝Anaconda跟Jupyter,這提供了我們舒適的入門環境,不過當我們已經不是初學者,工具也該跟著進化了。
事實上我也非常不喜歡Anaconda,它非常肥大,並且總是讓我搞不清楚我的套件到底裝到哪邊去了。通常我都使用 pipenv 與 pyenv,非常輕量、直覺
積木式的程式區塊
Jupyter將程式碼使用區塊隔開,你可以任意執行每一個區塊,但是問題隨之而來,執行的區塊被讀進記憶體,但是在你變動區塊後,記憶體裡面的資料沒有改動,這樣可能使你的在debug的時候發生問題
原本的程式
變動後將第一行刪除,變數資料依然存在
看起來似乎沒什麼,但是當你的程式邏輯越來越複雜,也使你的環境愈發髒亂。
甚至有幾次我改變了我的副程式,但是我根本不確定目前使用的是變更前還是變更後的副程式。
困難的GIT版控
Jupyter使用了json結構儲存你的程式碼和一些其他資訊
這其實非常不利於你使用git進行版控,每一次輸出變動,都會造成git改變,也沒有辦法使用git進行合作開發,一想到合併衝突就頭痛😨
沒有辦法直接引入.ipynb
好吧,的確有套件或指令可以輔助你做這件事,但是並沒有讓這件事情變得簡單
https://stackoverflow.com/questions/20186344/ipynb-import-another-ipynb-file
比較理想、好維護的架構應該是
- main.py
- requments.txt
- lib/
- foo/
- __init__.py
...
- bar/
- __init__.py
...
當你的程式變得複雜,你不會想要想將所有東西擠在同一支檔案的
結尾
說了這麼多Jupyter還是有它的優點,作為教學或是展示用途或許不錯,但是它並不適合用做開發,當你漸漸熟悉Python之後,這些特性將會成為絆腳石,如果不拋開它,將無法向前邁進