IPython?8.0?Python?命令行交互工具
前言:
IPython 是 Python 的原生交互式 shell 的增強(qiáng)版,可以完成許多不同尋常的任務(wù),比如幫助實(shí)現(xiàn)并行化計(jì)算;主要使用它提供的交互性幫助,比如代碼著色、改進(jìn)了的命令行回調(diào)、制表符完成、宏功能以及改進(jìn)了的交互式幫助。
IPython 8.0 醞釀了許久,主要對(duì)現(xiàn)有代碼庫(kù)和幾個(gè)新功能進(jìn)行了改進(jìn)。新功能包括在 CLI 中使用 Black 重新格式化代碼、ghost 建議以及突出錯(cuò)誤節(jié)點(diǎn)的更好的回溯,從而使復(fù)雜的表達(dá)式更易于調(diào)試。
1.追溯改進(jìn)
之前的錯(cuò)誤回溯顯示一個(gè)散列表(hash),用于編譯 Python AST:
In [1]: def foo(): ...: ? ? return 3 / 0 ...: In [2]: foo() --------------------------------------------------------------------------- ZeroDivisionError ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last) <ipython-input-2-c19b6d9633cf> in <module> ----> 1 foo() <ipython-input-1-1595a74c32d5> in foo() ? ? 1 def foo(): ----> 2 ? ? return 3 / 0 ? ? 3 ZeroDivisionError: division by zero
現(xiàn)在錯(cuò)誤回溯的格式正確,會(huì)顯示發(fā)生錯(cuò)誤的單元格編號(hào):
In [1]: def foo(): ...: ? ? return 3 / 0 ...: Input In [2]: foo() --------------------------------------------------------------------------- ZeroDivisionError ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last) input In [2], in <module> ----> 1 foo() Input In [1], in foo() ? ? 1 def foo(): ----> 2 ? ? return 3 / 0 ZeroDivisionError: division by zero
第二個(gè)回溯改進(jìn)是stack_data 包的集成;在回溯中提供更智能的信息;它會(huì)突出顯示發(fā)生錯(cuò)誤的 AST 節(jié)點(diǎn),這有助于快速縮小錯(cuò)誤范圍,比如:
def foo(i): ? ? x = [[[0]]] ? ? return x[0][i][0] def bar(): ? ? return foo(0) + foo( ? ? ? ? 1 ? ? ) + foo(2)
調(diào)用 bar() 會(huì)在 IndexError 的返回行上引發(fā)一個(gè) foo,IPython 8.0 可以告訴你索引錯(cuò)誤發(fā)生在哪里:
IndexError Input In [2], in <module> ----> 1 bar() ? ? ? ? ^^^^^ Input In [1], in bar() ? ? ? 6 def bar(): ----> 7 ? ? return foo(0) + foo( ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^^^^ ? ? ? 8 ? ? ? ? 1 ? ? ? ? ?^^^^^^^^ ? ? ? 9 ? ? ) + foo(2) ? ? ? ? ?^^^^ Input In [1], in foo(i) ? ? ? 1 def foo(i): ? ? ? 2 ? ? x = [[[0]]] ----> 3 ? ? return x[0][i][0] ? ? ? ? ? ? ? ? ? ?^^^^^^^
用 ^ 標(biāo)記的位置在終端會(huì)高亮顯示。
第三個(gè)回溯改進(jìn)是最謹(jǐn)慎的,但對(duì)生產(chǎn)力有很大影響,在回溯中的文件名后面附加一個(gè)冒號(hào) :: 和行號(hào):
ZeroDivisionError ? ? ? ? ? ? ? Traceback (most recent call last) File ~/error.py:4, in <module> ? ? ? 1 def f(): ? ? ? 2 ? ? 1/0 ----> 4 f() File ~/error.py:2, in f() ? ? ? 1 def f(): ----> 2 ? ? 1/0
許多終端和編輯器具有的集成功能,允許在使用此語(yǔ)法時(shí) 直接跳轉(zhuǎn)到錯(cuò)誤相關(guān)的文件/行 。
2.自動(dòng)建議
Ptpython 允許用戶在ptpython/config.py 中啟用自動(dòng)建議功能,此功能包含豐富的代碼補(bǔ)全建議,
如圖:

目前,自動(dòng)建議僅在 emacs 或 vi 插入編輯模式中顯示:
ctrl e、ctrl f 和 alt f 快捷鍵默認(rèn)在 emacs 模式下工作。
要在 vi 插入模式下使用這些快捷鍵,必須在 config.py 中創(chuàng)建自定義鍵綁定。
3.使用“?”和"??"查看對(duì)象信息
在 IPDB 中,現(xiàn)在可以使用“?”和”? ?“來(lái)顯示對(duì)象的信息,在使用 IPython 提示符時(shí)也可如此操作:
ipdb> partial? Init signature: partial(self, /, *args, **kwargs) Docstring: partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords. File: ? ? ? ? ? ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py Type: ? ? ? ? ? type Subclasses:
4.歷史范圍全局功能
之前使用 %history 功能時(shí) , 用戶可以指定會(huì)話和行的范圍,例如:
~8/1-~6/5 ? # see history from the first line of 8 sessions ago, ? ? ? ? ? ? # to the fifth line of 6 sessions ago.``
或者可以指定全局模式(global):
-g <pattern> ?# glob ALL history for the specified pattern.
但無(wú)法同時(shí)指定兩者,如果用戶確實(shí)指定了范圍和全局模式,則將使用 glob 模式(通配所有歷史記錄),并且將 忽略范圍 。
現(xiàn)在此功能獲得了增強(qiáng),如果用戶同時(shí)指定范圍和 glob 模式,則 glob 模式將應(yīng)用于指定的歷史范圍。
到此這篇關(guān)于IPython 8.0 Python 命令行交互工具的文章就介紹到這了,更多相關(guān)Python 交互工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中將數(shù)據(jù)生成為Excel文件的5種方法舉例
工作中需要把數(shù)據(jù)導(dǎo)入到excel中,記錄一下操作方式,這篇文章主要給大家介紹了關(guān)于python中將數(shù)據(jù)生成為Excel文件的5種方法,文中通過(guò)圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
用Python手把手教你實(shí)現(xiàn)2048小游戲
感覺好久沒和大家一起寫小游戲玩了,今天恰巧有空.這次我們來(lái)用Python做個(gè)2048小游戲吧.廢話不多說(shuō),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
python多版本工具miniconda的配置優(yōu)化實(shí)現(xiàn)
通過(guò)Miniconda,您可以輕松地創(chuàng)建和管理多個(gè)Python環(huán)境,同時(shí)確保每個(gè)環(huán)境具有所需的依賴項(xiàng)和軟件包,本文主要介紹了python多版本工具miniconda的配置優(yōu)化實(shí)現(xiàn),感興趣的可以了解一下2024-01-01
python實(shí)現(xiàn)在多維數(shù)組中挑選符合條件的全部元素
今天小編就為大家分享一篇python實(shí)現(xiàn)在多維數(shù)組中挑選符合條件的全部元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能
這篇文章主要介紹了python3.7實(shí)現(xiàn)云之訊、聚合短信平臺(tái)的短信發(fā)送功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

