Featured image of post IPython与Jupyter的使用

IPython与Jupyter的使用

IPython与Jupiter是什么?

IPython是Python的一个交互式解释器,可以提供交互式命令行,支持自动补全、历史记录等功能。Jupyter是IPython的一个扩展,可以提供交互式命令行、Markdown文档、代码块等功能。当你使用%run命令时,IPython会在同一个进程内执行指定文件中的代码,确保你能够在执行完成时立即探索结果。 Picture

IPython的使用

启动IPython

像启动标准Python解释器一样,你可以ipython命令启动IPython命令行。 Picture

IPython的交互式命令行

你可以将Python语句输入命令行,然后按下回车键运行。当你在IPython命令行中仅仅输入一个变量名后,它会返回一个表示该对象的字符串: Picture

IPython输出风格

与常见的print打印语句不同,IPython会将输出格式化为一个更易读的格式。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import numpy as np
data = {i:np.random.randn() for i in range(7)}
data
    {0: -0.4046457180241955,
     1: -2.27136111318475,
     2: 1.7273107463935018,
     3: -1.364839504945707,
     4: -1.957277837917039,
     5: -0.5369751270845555,
     6: 0.9250198022472945}

IPython的Tab补全功能

相较于标准Python命令行,IPython增添了Tab补全功能。通常这种功能只在IDE或者其他交互式计算分析环境中提供。当在命令行中输入一个表达式时,按下Tab键可以自动搜索能够匹配当前表达式的自定义变量、关键字、内建函数、方法、属性、名称、关键字参数等。另外需要导入的模块也可以通过相同的方式进行补全。并且在新版的IPython中,自动补全是在下拉列表中进行的,需要在补全列表中选择一个选项,然后按回车键执行。
请注意IPython默认情况下隐藏了以下划线开始的方法和属性,诸如魔术方法,内部“私有”方法和属性以防止新手混淆,这些属性必须先输入下划线才可以看到
此外,Tab补全功能还可以用于对计算机文件系统的搜索,当输入任意路径(甚至是Python字符串)时,按下Tab键可以自动补全文件和目录名。这与%run命令搭配使用能够节省大量的输入时间(%run + Tab补全文件路径)。

内省

在一个变量名前后使用问号(?)可以显示一些关于该对象的概要信息:

1
array?

Picture 这就是对象内省。如果对象是一个函数或实例方法且文档字符串已经写好,则文档字符串就会显示出来。例如:

1
2
3
4
5
6
7
8
def exchange_numbers(a, b):
    """
    Exchange two numbers without a temp variable
    Returns
    --------
    b, a
    """
    return b, a

然后使用?显示对象的完整文档字符串:

1
exchange_numbers?

Picture 使用双问号??可以显示函数源代码:

1
exchange_numbers??

Picture 此外?操作符还有一个终极用途,可以结合通配符*使用,例如我们可以得到Numpy顶层函数中包含load的函数名列表:

1
2
3
4
5
6
np.*load*?
np.__loader__
np.load
np.loads
np.loadtxt
np.pkgload

%run命令

在Juypter中可以使用%run命令运行任意的Python程序文件,并且Jupyter提供了良好的用户输入接口。

%run FileName.py这行命令中,脚本是在一个独立的空白命名空间中运行的,之前导入的模块或定义的变量对其不会造成影响。(类似于在一个单独的命令行中执行python FileName.py)。

在程序执行期间,按下Ctrl+C可以中断程序。除了某些特殊情况,这将导致所有的Python程序立即停止运行。但需要注意的是,当一段Python代码被其他已经编译的扩展模块调用时,按下Ctrl+C将不会中断程序。在这些情况下,你需要等到控制流重新返回Python解释器,甚至有时还需要强制结束Python进程。

关于魔术命令

IPython中存在一些特殊的内置命令称为魔术命令,它们以%开头,用于简化常见任务。例如:

指令 功能
%time statement 命令可以测量一段代码的执行时间
%timeit statement 命令多次运行单个语句计算平均时间
%pwd 命令可以显示当前工作目录
%cd 命令可以改变当前工作目录
%ls 命令可以列出当前工作目录下的文件
%matplotlib 命令可以启用matplotlib绘图功能
%edit 命令可以打开一个Python程序文件的编辑器
%debug 命令可以启动调试器
%hist 命令可以显示命令历史记录
%pdb 命令可以启用Python调试器
%who, %who_ls, %whos 命令可以显示当前工作空间中的变量
%quickref 命令可以打开一个快速参考手册
%magic 命令可以列出所有魔术命令的详细文档
%paste 命令可以从剪贴板中执行已经预先格式化的Python代码
%cpaste 命令可以打开一个特殊提示符,然后手动粘贴待执行的Python代码
%reset 命令可以重置当前工作空间,删除当前工作空间中的所有变量和函数
%page OBJECT 通过分页器更美观地打印显示一个对象
%xdel variable 命令可以删除一个变量并清除相关的引用

Tips:

  • 魔术命令可以看作IPython系统内部的命令行程序,大多数魔术命令都可以在其后追加?操作符来显示更加详细的文档
1
In[1]: %time?
  • 只要没有变量定义为与魔术命令相同的名字,魔术命令即可不加%使用,这种特性可以通过%automagic命令来启用或禁用
  • 一些魔术命令(例如%pwd)也像Python函数一样,其输出可以赋值给一个变量。
1
2
In[2]: pwd = %pwd
In[3]: pwd

matplotlib集成

IPython良好得集成了matplotlib,在IPython中,运行%matplotlib命令可以生成多个绘图窗口而不会干扰控制台的会话。

1
2
3
4
In[1]: %matplotlib
In[2]: import matplotlib.pyplot as plt
In[3]: import numpy as np
In[4]: plt.plot(np.random.randn(50).cumsum(), 'k--')

在Jupyter中,命令会有所不同: Picture

Jupyter的使用

Jupyter是一个基于Web的交互式计算分析环境,可以运行多种数据分析语言。一般安装Anaconda时,已经安装了Jupyter。 在使用Jupyter时,需要打开命令行输入jupyter notebook命令,然后打开浏览器访问localhost:8888。一般情况下,Jupyter会自动打开一个浏览器窗口(除非你使用了 –no-browser 选项)同时,你可以在jupyter notebook命令后面追加目录来指定Jupyter的默认打开地址。 Picture

Licensed under CC BY-NC-SA 4.0
热爱可抵岁月漫长,温柔可挡艰难时光。
Nothing but enthusiasm brightens up the endless years.
转载请注明主页网址哦~