Ipython-技术文档

fansichao 2021-10-23 16:16:35
Categories: Tags:

IPython 是基于 BSD 开源的,并且 IPython 为交互式计算提供了一个丰富的架构。

IPython 特色:

IPython 使用技巧

IPython 中 %调用 IPython 命令

Tab 键自动补全

在 shell 中输入表达式时,按下 Tab 键可将当前命名空间中任何与已输入的字符串相匹配的变量(对象、函数等)显示出来

中断正在执行的代码

当代码正在执行时,需要终止代码运行,则只需按下“Ctrl+C”,就会引发一个 KeyboardInterrupt,除一些特殊的情况以外,绝大部分 Python 程序会立即停止执行。
键盘中的快捷键
使用 IPython 编码时还可使用键盘快捷键来快速完成所需操作,常用的键盘快捷键(IPython 环境下)如下表所示。

内置命令-记录 (%logstart)

记录输入的命令

1
2
3
4
5
6
7
8
In [2]: %logstart
Activating auto-logging. Current session state plus future input saved.
Filename : ipython_log.py
Mode : rotate
Output logging : False
Raw input log : False
Timestamping : False
State : active

内置命令-执行系统命令 (!)

1
2
In [6]: !hostname
neo4j.yinsho.com

内置命令-内省 (?)

当某对象的信息不是很明确时,可以在变量的前面或后面加上问号(?),有关该对象的一些通用信息就会显示出来,如下图所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看变量或函数
In [4]: ?a
Type: int
String form: 1
Docstring:
int(x=0) -> int or long
int(x, base=10) -> int or long


# 打印函数的源码
In [15]: func??
Signature: func()
Source:
def func():
print("hello world")
File: /<ipython-input-13-4475a92670e6>
Type: function



内置命令-执行文件代码 (%run)

1
2
3
4
5
6
7
8
9
10
In [29]: !vi test.py

In [30]: !cat test.py
def func1():
print("hello world")

func1()

In [31]: %run "test.py"
hello world

目录书签系统 (%bookmark)

目录书签,类似于快捷方式

1
2
3
4
5
6
7
8
9
10
11
12
# 定义 local 书签
In [37]: %bookmark local /usr/local
# 查看所有书签
In [38]: %bookmark -l
Current bookmarks:
local -> /usr/local
# 使用书签.
In [39]: cd local
(bookmark:local) -> /usr/local
/usr/local
# 覆盖之前书签
In [41]: %bookmark local /etc/sysconfig

其他命令

Ipython 高级使用

日志处理、代码调试、性能分析、自定义主题

IPython 附件

快捷键

快捷键 作用
Ctrl+P 或向上箭头 后向搜索命令
Ctrl+N 或向下箭头 前向搜索命令
Ctrl+R 按行读取反向历史搜索(部分匹配)
Ctrl+Shift+V 从剪切板粘贴文本
Ctrl+A 将光标移动到行首
Ctrl+E 将光标移动到行尾
Ctrl+K 删除从光标开始至行尾的文本
Ctrl+U 清除从光标开始至行首的文本
Ctrl+F 将光标向前移动一个字符
Ctrl+B 将光标向后移动一个字符
Ctrl+L 清屏

魔术命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%quickref                   显示ipython的快速参考
%magic 显示所有的魔术命令的详细文档
%debug 从最新的异常跟踪的底部进入交互式调试器
%hist 打印命令的输入(可选输出)历史
%pdb 在异常发生后自动进入调试器
%paste 执行剪贴板中的python代码
%cpaste 打开一个特殊提示符以便手工粘贴待执行的python代码
%reset 删除interactive命名空间中的全部变量/名称
%page OBJECT 通过分页器打印输出object
%run script.py 在ipython中执行一个python脚本文件
%prun statement 通过cprofile执行statement,并打印分析器的输出结果
%time statement 报告statement的执行时间
%timeit statement 多次执行statement以计算系统平均执行时间.对那么执行时间非常小的代码很有用
%who,%who_id,%whos 显示interactive命名空间中定义的变量,信息级别/冗余度可变
%xdel variable 删除variable,并尝试清除其在ipython中的对象上的一切引用

调试器命令 (%debug)

debug 调试器样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
In [11]: %debug
> <ipython-input-10-0ee88489e9f0>(1)<module>()
----> 1 func%debug
ipdb>

设置断点单步调度
%run -d script.py

s 进入脚本 ,
b 13 # 在13行设置断点
c # continue till touch the break point
n # 执行下一行。
如果有exception 报出:throws_an_exception ,
ipdb> s # 单步进入 exception 那行.
ipdb> !a #在变量a 前加 ! 查看 变量内容

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,
主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令

pdb 调试器命令列表

1
2
3
4
5
6
7
8
9
10
11
12
13
h(help)                 显示命令列表
help command 显示command的文档
c(continue) 恢复程序的执行
q(quit) 退出调试器,不再执行任何代码
b(break) n 在当前文件的第n行设置一个断点
b path/to/file.py:n 在指定文件的第n行设置一个断点
s(step) 单步进入函数调用
n(next) 执行当前行,并前进到当前级别的下一行
u(up)/d(down) 在函数调用栈中向上或向下移动
a(args) 显示当前函数的参数
debug statement 在新的递归调试器中调用语句statement
l(list) statement 显示当前行,以及当前栈级别上的上下文参考代码
w(where) 打印当前位置的完整栈跟踪(包括上下文参考代码)

资源

IPython 用法详解: https://www.cnblogs.com/renpingsheng/p/7759797.html