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
可以順利換行。