IPython

对象内省(object introspection)

In [1]:
def add_numbers(a,b):
    """

    HERE IS JUST A COMMENT
    """
    return a+b
In [2]:
add_numbers?

Signature: add_numbers(a, b)

Docstring: HERE IS JUST A COMMENT

File: c:\users\diary\jupyter\<ipython-input-1-722117111824>

Type: function

In [3]:
add_numbers??

Signature: add_numbers(a, b)

Source:

def add_numbers(a,b): """

HERE IS JUST A COMMENT
"""
return a+b

File: c:\users\diary\jupyter\<ipython-input-3-722117111824>

Type: function

In [4]:
import numpy as np
np.*load*?

np.load

np.loads

np.loadtxt

np.pkgload

使用命令历史

  • %run
In [5]:
%run Sketch.py
h,m,s
Out[5]:
(15, 30, 54)

【怎么感觉貌似好像比自己手动运行脚本还要快一些……】

如果希望脚本能够访问在交互式Ipython命名空间中定义的变量,那就应该使用%run -i 而不是%run

Ctrl - C ---> KeyboardInterrupt

  • Ipython常用快捷键
命令 说明
Ctrl-A 移动光标到行首
Ctrl-E 移动光标到行尾
Ctrl-K 删除从光标开始至行尾的文本
Ctrl-U 清除当前行的所有文本
Ctrl-L 清屏
  • 魔术命令
命令 说明
%quickref 显示Ipython的快速参考
%magic 显示所有魔术命令的详细文档
%debug 显示Ipython的快速参考
%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_Is、%whos 显示interactive命名空间中定义的变量,信息级别/冗余度可变
%xdel variable 删除variable,并尝试清楚其在Ipython中的对象上的一切引用

输入和输出变量

IPython会将最近的两个输出结果分别保存在_(一个下划线)和__(两个下划线)变量中

In [6]:
3*5
Out[6]:
15
In [7]:
_
Out[7]:
15
In [8]:
7*8 
Out[8]:
56
In [9]:
__
Out[9]:
15
In [10]:
_6
Out[10]:
15
In [11]:
_i9
Out[11]:
u'__'
In [12]:
print 'hi'
hi
In [13]:
exec _i12
hi
In [14]:
%logstart #generate ipython_log.py
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

与操作系统交互

In [ ]:
!echo 'hi' #to run it in shell
In [ ]:
a= !echo 'hi'
In [ ]:
%alias say echo
say 'hi'  # == echo ''hi