IPython与Jupiter是什么?
IPython是Python的一个交互式解释器,可以提供交互式命令行,支持自动补全、历史记录等功能。Jupyter是IPython的一个扩展,可以提供交互式命令行、Markdown文档、代码块等功能。当你使用%run命令时,IPython会在同一个进程内执行指定文件中的代码,确保你能够在执行完成时立即探索结果。
IPython的使用
启动IPython
像启动标准Python解释器一样,你可以ipython命令启动IPython命令行。
IPython的交互式命令行
你可以将Python语句输入命令行,然后按下回车键运行。当你在IPython命令行中仅仅输入一个变量名后,它会返回一个表示该对象的字符串:
IPython输出风格
与常见的print打印语句不同,IPython会将输出格式化为一个更易读的格式。
|
|
IPython的Tab补全功能
相较于标准Python命令行,IPython增添了Tab补全功能。通常这种功能只在IDE或者其他交互式计算分析环境中提供。当在命令行中输入一个表达式时,按下Tab键可以自动搜索能够匹配当前表达式的自定义变量、关键字、内建函数、方法、属性、名称、关键字参数等。另外需要导入的模块也可以通过相同的方式进行补全。并且在新版的IPython中,自动补全是在下拉列表中进行的,需要在补全列表中选择一个选项,然后按回车键执行。
请注意IPython默认情况下隐藏了以下划线开始的方法和属性,诸如魔术方法,内部“私有”方法和属性以防止新手混淆,这些属性必须先输入下划线才可以看到
此外,Tab补全功能还可以用于对计算机文件系统的搜索,当输入任意路径(甚至是Python字符串)时,按下Tab键可以自动补全文件和目录名。这与%run命令搭配使用能够节省大量的输入时间(%run + Tab补全文件路径)。
内省
在一个变量名前后使用问号(?)可以显示一些关于该对象的概要信息:
|
|
这就是对象内省。如果对象是一个函数或实例方法且文档字符串已经写好,则文档字符串就会显示出来。例如:
|
|
然后使用?显示对象的完整文档字符串:
|
|
使用双问号??可以显示函数源代码:
|
|
此外?操作符还有一个终极用途,可以结合通配符*使用,例如我们可以得到Numpy顶层函数中包含load的函数名列表:
|
|
%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系统内部的命令行程序,大多数魔术命令都可以在其后追加?操作符来显示更加详细的文档
|
|
- 只要没有变量定义为与魔术命令相同的名字,魔术命令即可不加%使用,这种特性可以通过%automagic命令来启用或禁用
- 一些魔术命令(例如%pwd)也像Python函数一样,其输出可以赋值给一个变量。
|
|
matplotlib集成
IPython良好得集成了matplotlib,在IPython中,运行%matplotlib命令可以生成多个绘图窗口而不会干扰控制台的会话。
|
|
在Jupyter中,命令会有所不同:
Jupyter的使用
Jupyter是一个基于Web的交互式计算分析环境,可以运行多种数据分析语言。一般安装Anaconda时,已经安装了Jupyter。 在使用Jupyter时,需要打开命令行输入jupyter notebook命令,然后打开浏览器访问localhost:8888。一般情况下,Jupyter会自动打开一个浏览器窗口(除非你使用了 –no-browser 选项)同时,你可以在jupyter notebook命令后面追加目录来指定Jupyter的默认打开地址。