Skip to content

[Python] IPython 互動界面中換行的方法簡記

Last Updated on 2023-12-18 by Clay

前言

IPython 是一個提供互動式運算的系統,可以在各種 shell 跟視覺化界面整合在一起;比方說我們可以透過終端機使用 ipython(前題是這個模組有裝)、或是使用如 VS Code 和 PyCharm 這類的圖形化界面編輯器/IDE。

當然,著名的 Jupyter Notebook 核心也是使用 IPython。可以說是一個非常方便好用的工具,我偶爾懶得開計算機甚至都直接呼叫它,有時分析投資收益懶得寫一份漂亮的腳本也會簡單地在 IPython 中寫上幾句,更別說平日測試各種短小的程式碼時也都會使用它。

但有個問題真的困擾我很久了:那就是 IPython 中到底該怎麼換行呢?有時候實在是不希望自己的程式碼都是一行行的。

查詢了網路之後,我找到了兩種方法。


解決方法

解決方法就是想要換行時加上 ; \ 的後綴。是的,就是這麼暴力。

Python 的熟練者想必都知道,Python 其實是可以把許多宣告都同時寫在一行裡的,那就是使用 ; 來分開不同段的敘述。雖然 Python 不像其他語言一樣需要強制在一行結束後加上 ; 符號,但是加上了也不會對程式產生影響,甚至還可以讓直譯器知道你後面接著程式碼跟前面是分開的。

另外,像是 \ 則是 Python 的另外一種程式語法,代表著程式尚未完成的 wrap,也就是下一段的程式碼是要跟當前一段接在一起的。這是當你寫一段語法真的寫到太長了、但是又為了可讀性需要換行時可以使用的方法。

而在 IPython 中換行,就是把這兩個方法結合在一起:首先先輸入 ; 代表你宣告的這一行已經結束了。但是此時因為直接按下 Enter 就會執行這一行了,所以加上一個 \ 符號代表接下來的程式碼需要跟當前這一行一起工作 —— 所以就變成說,實際上你不需要下一行一起工作,但你為了讓 IPython 不要讓程式開始跑而硬加上這行去『騙它』。

In [1]: a = 1; \
   ...: b = 2; \
   ...: a + b
Out[1]: 3


雖然有些奇怪,但是至少換行了;並且應該沒有多少人的正式開發環境是在 IPython 中,所以只是測試用的話這樣還可以接受吧。

而第二個方法就單純得多,不過我看 GitHub Issues 上大家因為裝置的不同,可能快捷鍵就不同了;有的人是 Ctrl+o、有的人則是 Alt+o

對我來說,Ctrl+o 可以順利換行。


References


Read More

Tags:

Leave a Reply