这是原书第三章内容总结,第一次写文章,有什么不对的,还请大家指出来哈~
Ipython 基础
基本命令
## 以下用>>> 表示命令行输入
>>> ipython # 启动方式一
>>> ipython --pylab #启动方式二(用于绘图)
>>> b = [1,2,3] #举例
>>> b? # ?(內省)将对象的通用信息显示出来
# 还可用于函数,显示函数源代码
Type: list
String form: [1, 2, 3]
Length: 3
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
魔术命令
# 定义脚本 ipython_test.py
# def f(x,y,z)
# return (x+y)/z
# a = 5
# b = 6
# c = 7.5
# result = f(a,b,c)
# %run 将脚本文件当作Python程序来运行
# 之后便可在shell中访问脚本文件中全部变量
>>> %run -i ipython_test.py
## 执行剪贴板的代码
>>> %paste #回车后,直接执行已经在剪贴板中的代码
>>> %cpaste #回车后,将代码复制于下方,并输入“--”结尾
# 以'%'为前缀的命令
>>> import numpy as np #import 用来加入python库
>>> from numpy.random import randn
>>> a = np.random.randn(100,100) # 以随机值填充100*100的矩阵
>>> %timeit np.dot(a,a) # dot 矩阵乘法
# %timeit 检测python语句执行时间
常用的Ipython魔术命令
命令 | 解释 |
---|---|
%quickref | 显示 IPython 快速参考 |
%debug | 从最新的异常跟踪的底部进入交互式调试器 |
%hist | 打印命令的输入(可选输入)历史 |
%pdb | 在异常发生后自动进入调试器 |
%reset | 删除 interactive 命名空间中的全部变量 |
%run script.py | 执行 script.py |
%prun statement | 通过 cProfile 执行对 statement的逐行性能分析 |
%time statement | 测试 statement 的执行时间 |
%timeit statement | 多次测试 statement 的执行时间并计算平均值 |
%who、%who_ls、%whos | 显示 interactive 命名空间中定义的变量,信息级别/冗余度可变 |
%xdel variable | 删除 variable ,并尝试清除其在 IPython 中的对象上的一切引用 |
!cmd | 在系统 shell 执行cmd |
output=!cmd args | 执行cmd 并赋值 |
%bookmark | 使用 IPython 的目录书签系统 |
%cd <i>direcrory</i> | 切换工作目录 |
%logstart | 记录整个会话,包括之前的命令 |
%dhist | 打印目录访问历史 |
%pwd | 返回当前工作目录(字符串形式) |
%env | 返回当前系统变量(以字典形式) |
对魔术命令不熟悉的话可以通过 %magic 查看详细文档;对某一个命令不熟悉的话,可以通过 %cmd? 内省机制查看特定文档。值得一提的是,IPython 中使用 del 命令无法删除所有的变量引用,因此垃圾回收机制也无法启用,所以有些时候你会需要使用 %xdel 或者 %reset。
Ipython 主要操作快捷键
<Tab> 自动匹配当前命名空间函数等
Ctrl-C 中止当前正在执行的代码
Ctrl-A 将光标移动到行首
Ctrl-E 将光标移动到行尾
Ctrl-K 删除从光标开始至行尾的文本
Ctrl-U 删除从光标开始至行首的文本
Ctrl-L 清屏
(I)Python调试器命令
命令 | 解释 |
---|---|
h(elp) | 显示命令列表 |
help <i>command</i> | 显示 <i>command</i> 的文档 |
c(ontinue) | 恢复程序的执行 |
q(uit) | 退出调试器,不再执行任何代码 |
b(reak) <i>number</i> | 在当前文件的第<i>number</i> 行设置一个断点 |
b path/to/ <i>file.py:number</i> | 在指定文件的第<i>number</i> 行设置一个断点 |
s(tep) | 单步进入函数调用 |
n(ext) | 执行当前行,并前进到当前级别的下一行 |
u(p)/d(own) | 在函数调用栈中向上或向下移动 |
a(rgs) | 显示当前函数的参数 |
debug <i>statement</i> | 在新的(递归)调试器中调用语句<i>statement</i> |
l(ist) <i>statement</i> | 显示当前行,以及当前栈级别上的上下文参考代码 |
w(here) | 打印当前位置的完整栈跟踪(包括上下文参考代码) |
今天的内容就这么多,欢迎交流,共同进步哈~