下一代Jupyter Notebook?也太好用了吧!
:
Jupyter Notebook以其交互式調試,支持markdown/latex,支持多種編程語言等優(yōu)點,使得它在Python開發(fā)過程中具有很多不可取代的優(yōu)勢。
如果經常瀏覽GitHub會發(fā)現,有不少有效的項目都適用的是Jupyter Notebook。
但是,話說回來,原始版本的ipython notebook的確存在很多不足支持,例如,自動補全、語法提示,想要達到常規(guī)IDE的體驗就需要繁瑣的配置。
正因為如此,后續(xù)有不少企業(yè)推出了ipython notebook的升級和替代版本,例如,JupyterLab。
但是,僅有這些還不夠,還需要有優(yōu)秀的內核。
最近我在GitHub上就發(fā)現一款令我眼前一亮的工具-ipyflow。
它是一款反應式,具有執(zhí)行建議、語法擴展等功能的下一代 IPython 內核。
為什么需要ipyflow?
用過Jupyter的應該都清楚,它是由一個個獨立的單元格組成,這樣的確給交互式調試帶來了很多便利,但是同時也帶來了諸多弊端。
舉個例子,我們做數據分析過程中,不同單元格之間的數據流是有關系的,如果修改了其中一個單元格某個變量的值,其他單元格就需要額外再執(zhí)行一下,這樣就很麻煩。
而ipyflow則可以在交互式單元格之間跟蹤符號和單元格之間的數據流關系,針對上述問題就可以用到ipyflow的兩項特性:
執(zhí)行建議
反應式
執(zhí)行建議
簡單來說,為了使執(zhí)行狀態(tài)與單元格中的代碼保持一致,當我們修改了某個單元格中變臉的值之后,它會用不同顏色標注狀態(tài),指示需要做的操作。例如,藍色標識輸入,紅色標識輸出,綠色標識需要重新執(zhí)行的單元格:

反應式
可能有同學認為上述方法還是繁瑣,需要重新手動執(zhí)行每個受到影響的單元格。
其實,完全可以解放雙手!
這就需要提到ipyflow的另外一個特性--反應式。
可以在任一單元格執(zhí)行%flow mode reactive命令,這樣就會開啟反應式功能。
簡單來說,就是當我們修改某個單元格的變量值之后,受影響的單元格會根據變動自動反應。
下面看一個例子:

如果想關閉反應式功能,可以執(zhí)行%flow mode normal命令。
上面只是借著前面提到的問題介紹了ipyflow的兩個特性,除此之外,它還有一些強大的功能,例如,語法擴展、集成ipywidgets。
語法擴展
簡單概括就是,語法擴展在原本Python的語法之上增加了一些額外的語法,借著前面反應式這項功能的例子來說,我們可以在變量名前添加$符號來實現同樣的功能,這種語法在原生的Python中是沒有的。

集成ipywidgets
ipyflow 的反應式執(zhí)行引擎,以及它的 API與 ipywidgets 完全兼容,允許單元格響應滑塊變化、按鈕點擊和其他事件:

此功能可以與 stickyland 等其他擴展結合使用,這樣在JupyterLab + ipyflow 之上各種展示看板時會非常有用。
安裝使用
使用ipyflow時,需要首先安裝了JupyterLab,然后在執(zhí)行下面命令即可:
pip install ipyflow
然后執(zhí)行下方命令打開JupyterLab:
Jupyter Lab
打開之后會發(fā)現頁面上多了一個ipyflow的內核:

點擊Python 3 (ipyflow)就可以使用了:

通過上述這些配置之后,你會發(fā)現Jupyter不僅具備自身獨有的特性,還能夠兼?zhèn)銲DE的使用體驗,通過這樣配置就不會覺得Jupyter難用了!
建議大家有空可以多瀏覽Github,有很多好用的開源免費工具。但是,目前Github上項目多如牛毛,而且刷榜現在也非常嚴重,想要找到優(yōu)質的項目變得越來越難。這里,給大家推薦Github上一個非常不錯的項目《DevWeekly》,這個項目每周都會精挑細選一些優(yōu)質的開源項目,涵蓋C++、JAVA、JavaScript、Python、Go等不同編程語言。此外,還有一些開源工具、優(yōu)秀的技術文章,建議大家看一下:
hello,大家好,我是Jackpop,重點大學本科畢業(yè)后保送到哈工大計算數學專業(yè)讀研,有多年國內頭部互聯網、IT公司工作經驗,先后從事過計算機視覺、推薦系統(tǒng)、后端、數據等相關工作。如果同學們在升學考研、職業(yè)規(guī)劃、高考志愿、簡歷優(yōu)化、技術學習