ipython常用命令

http://my.oschina.net/chihz/blog/207624?utm_source=tuicool&utm_medium=referral


之前早就听说IPython是个神器,但是一直拖到现在才去学习使用。很多比较时髦的语言都会带一个可以直接交互的shell,python自不必说,像Scala、Ruby、Erlang这些语言的交互shell我也都用过一点儿。但用了IPython之后就颠覆了我对交互shell这东西的认知 —— 真的是神器。

1. 安装

我是在ubuntu下使用IPython,安装非常的简单,只需要 

sudo apt-get install ipython-notebook


就可以了。安装成功,输入ipython就可以使用,使用方法跟平时的python交互shell基本一致。不同的是有了tab自动补全和语句编号,以及下面的一连串神奇的功能:


2. 查看对象的信息

查看对象的信息是IPython的一项基本功能,通过在模块或者函数名后面加?或者??就可以查看这个对象的信息。

?
1
2
3
4
5
In [ 1 ]:  import  random
 
In [ 2 ]: random??
 
In [ 3 ]: random?

查看对象信息还有一些内建的指令:

%pdoc <obj name> 查看对象的pydoc

%psource <obj name> 查看对象的源码,C扩展的话会有问题

%pdef <function name> 查看函数的声明

%pfile <obj name> 查看所在的源码文件

3. 指令

像%pdoc、%psource、%pdef这些都是IPython中的内建指令,这样的指令有很多,可以通过%magic查看所有的指令,也可以通过%func <name> 来查看具体某个指令的说明,通过%lsmagic可以列出所有的指令列表

在IPython中,指令分为两种,以%开头的叫做line magic,这种类型的指令只能作用与一行代码。比如:

?
1
2
3
In [ 5 ]:  % time a  =  1
CPU times: user  0  ns, sys:  0  ns, total:  0  ns
Wall time:  17.9  µs

以%%开头的叫做cell magic,这种类型的指令可以作用于一个代码块,比如:

?
1
2
3
4
5
6
In [ 7 ]:  % % time
for  in  xrange ( 1000000 ):
     pass
    ...: 
CPU times: user  44  ms, sys:  12  ms, total:  56  ms
Wall time:  48.4  ms

我们可以对指令进行自定义,做法非常的简单,比如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import  time
from  IPython.core.magic  import  (
     register_line_magic,
     register_cell_magic,
     register_line_cell_magic
)
 
def  _test_exec_time(code):
     begin_time  =  time.time()
     exec (code)
     print  "used time:" , time.time()  -  begin_time
 
 
@register_line_magic
def  line_my_time(line):
     _test_exec_time(line)
 
@register_cell_magic
def  cell_my_time(line, cell):
     _test_exec_time(cell)
 
@register_line_cell_magic
def  line_cell_my_time(line, cell = None ):
     if  cell  is  None :
         _test_exec_time(line)
     else :
         _test_exec_time(cell)

我们自己来实现了一个计时指令,只要使用@register_line_magic、@register_cell_magic和@register_line_cell_magic就可以做到。把这个文件以.py结尾命名保存到/home/samchi/.config/ipython/profile_default/startup中,每次启动IPython的时候就会运行这个目录下的文件。重新进入IPython,进行测试:

?
1
2
3
4
5
6
7
8
In [ 2 ]:  % line_my_time a  =  1
used time:  0.000108957290649
 
In [ 3 ]:  % % cell_my_time
    ...:  for  in  xrange ( 10000 ):
    ...:      pass
    ...: 
used time:  0.00216698646545

4. run & edit

通过%run <外部脚本路径> 可以运行一个外部的python script,并把运行结果导入到当前的IPython上下文环境,好比说外部脚本定义了一个变量a,那么通过%run运行这个脚本之后就可以在IPython中继续使用这个变量。

如果需要编写一大段代码不适合使用IPython,那么就可以使用%edit指令,%edit指令能启动文本编辑器,在文本编辑器中编辑一段代码,保存退出后就可以在IPython中执行。

5. 与系统命令交互

在IPython中可以很方便的使用Linux命令,只需要一个!就可以,比如:

?
1
2
3
In [ 4 ]: !ping baidu.com
PING baidu.com ( 123.125 . 114.144 56 ( 84 ) bytes of data.
64  bytes  from  123.125 . 114.144 : icmp_req = 1  ttl = 35  time = 543  ms

可以把Linux命令的运行结果赋值给一个python的变量:

?
1
2
3
4
In [ 5 ]: name  =  !echo  "hello"
 
In [ 6 ]: name
Out[ 6 ]: [ 'hello' ]

还可以把Python的变量结合到Linux命令中,只需要使用一个$就可以,比如:

?
1
2
3
4
In [ 11 ]: name  =  "My name is Sam"
 
In [ 12 ]: !echo $name
My name  is  Sam

6. 使用Log来记录会话

没错,IPython的会话是可以保存的,只要指定记录的log就可以了。

使用%logstart [logname [logmode]] 就可以开启IPython log,logname是日志保存的路径,logmode是日志模式,有四种模式可选:

over: 如果存在那么覆盖之前的log

backup: 这是默认的模式,会将之前的log备份,比如将log_name backup为log_name~

append: 追加

rotate: 回滚,会保持这样的文件名,比如logname.1~ logname.2~ logname.3~等等

7. 将IPython集成到自己的代码中

我们可以将IPython集成到自己的项目中,这样特别方便调试,只需要:

?
1
2
import  IPython
Ipython.embed()

可以把项目的上下文包含进来。但是值的注意的是这样虽然可以访问代码的上下文变量,但是在IPython中的修改不会回馈到原先的代码当中,参考这个例子:

http://mail.scipy.org/pipermail/ipython-user/2011-September/008496.html


8. 总结

这些是我自己觉着IPython比较有用的一些功能,但是IPython的功能远远不止这些,国外甚至有人针对IPython专门写了本书!用起来,慢慢挖掘剩余的功能吧。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您是刚刚开始学习 IPython,并且需要一个入门教程,我推荐您按照以下步骤进行学习: 1. 安装和启动 IPython:确保您已经安装了 Python 和 IPython。可以使用 pip 命令来安装 IPython,然后在终端中输入 `ipython` 命令来启动 IPython shell。 2. 探索 IPython shell:了解 IPython shell 的基本功能和特性,如语法高亮、自动补全、历史记录等。可以尝试输入一些简单的 Python 代码并执行,以熟悉 IPython shell 的使用方式。 3. 学习魔术命令IPython 提供了一些特殊的命令,称为魔术命令(Magic Commands),可以帮助您进行更高级的操作。了解常用的魔术命令,如 `%run`、`%load`、`%pwd`、`%ls` 等,并通过实践来熟悉它们的用法。 4. 使用帮助和文档:IPython 提供了丰富的帮助和文档支持,可以通过 `?`、`??` 和 `%quickref` 等命令来访问相关信息。了解如何查看函数和模块的帮助文档,以及如何通过 `tab` 键进行自动补全和代码提示。 5. 学习 IPython 配置:IPython 允许您进行各种配置,以满足您的个性化需求。了解如何修改 IPython 的默认设置,并探索一些常用的配置选项,如主题、快捷键、自定义函数等。 6. 使用 IPython Notebook:IPython Notebook 是 IPython 的一个重要组件,提供了一个交互式的 Web 界面,可以在浏览器中编写和执行代码,并以富文本格式进行展示。学习如何启动和使用 IPython Notebook,并尝试创建一些简单的笔记本。 7. 探索 IPython 扩展:IPython 生态系统中有许多有用的扩展,可以为您的工作提供更多的功能和便利性。了解如何安装和使用一些常用IPython 扩展,如 `ipywidgets`、`nbextensions` 等。 8. 学习 IPython 的高级功能:一旦熟悉了 IPython 的基本用法,您可以进一步学习一些高级功能,如并行计算、调试器集成、魔术函数编写等。这些功能能够提升您的工作效率和代码质量。 通过以上步骤,您应该能够入门 IPython,并能够使用它来进行交互式的 Python 编程和数据分析工作。记得多练习和实践,探索更多 IPython 的用法和技巧,以不断提升您的技能水平。祝您学习愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值