今天我们学习下写ipython的magic命令. 好, magic是什么? 它是ipython自带的一些扩展命令, 类似%history,
%prun, %logstart..
想查看全部的magic可以使用ismagic, 列出可用的全部magics
1 |
|
magic分为2类:
- line magic: 一些功能命令
- cell magic: 主要是渲染ipython notebook页面效果以及执行某语言的代码
idb - python db.py shell
extension
idb是我最近写的一个magic.
主要是给ipython提供db.py的接口,我们直接分析代码(我只截取有代表性的一段):
1 |
|
PS:
- 调试中可以使用%reloa_ext idb 的方式重启magic
- %install_ext 之后默认放在你的ipython自定义目录/extensions里. 我这里是~/.ipython/extensions
好了,大家是不是觉得ipython的magic也不是很难嘛来了解ipython都提供了什么?
- magic装饰器的类型:
- line_magic # 刚才我们见识了, 就是%xx, xx就是magic的名字
- cell_magic # 就是%%xx
- line_cell_magic # 可以是%xx, 也可以是%%xx
先说cell_magic 来个例子,假如我想执行个ruby,本来应该是:
1 |
|
然后再说line_cell_magic:
1 |
|
Ps: line_cell_magic方法的参数是2个:
1 |
|
带参数的magic(我直接拿ipython源码提供的magic来说明):
一共2种风格:
1 |
|
getopt用法可以看这里 http://pymotw.com/2/getopt/index.html#module-getopt
我简单介绍下’D:l:rs:T:q’就是可以使用 -D, -l, -r, -s, -T, -q这些选项. :
号是告诉你是否需要参数,split下就是:
D:,l:,r,s:,T:,q 也就是-r和-q不需要参数其他的都是参数 类似 %prun -D
magic_arguments
1 |
|
还有个magic方法集: 用于并行计算的magics:
IPython/parallel/client/magics.py
版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin.im)转载,技术博客转载采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议
python