2.2 IPython基础

1 Running the IPython Shell (运行IPython Shell)

可以通过命令行启动IPython,就像启动标准的Python解释器一样,直接在terminal中键入ipython,回车即可。因为这里我用的是Jupyter Notebook,默认其实就是ipython。所以为了模仿在terminal中打开ipython的场景,前面加了一个!的命令。不过这个命令会让Jupyter Notebook一直处于busy状态,所以没必要真正运行。不过要是运行了的话,可以通过Jupyter中Kernel里的Interrupt来打断。

!ipython

Python 2.7.12 |Anaconda 4.1.1 (x86_64)| (default, Jul 2 2016, 17:43:17)

Type "copyright", "credits" or "license" for more information.

IPython 4.2.0 -- An enhanced Interactive Python.

? -> Introduction and overview of IPython's features.

%quickref -> Quick reference.

help -> Python's own help system.

object? -> Details about 'object', use 'object??' for extra details.

In [1]: ^C

KeyboardInterrupt

In [1]:

In [1]:

import numpy as np
from numpy.random import randn data = {i: randn() for i in range(7)} data

{0: -0.6878488995702015,

1: 0.3111764791766575,

2: -0.4951873499757597,

3: 0.1317607911255136,

4: -0.044484140124262925,

5: -1.2855719508755052,

6: -0.2073767192524388}

因为我们用的是ipython,所以上面输出的字典对象可读性很好,每行一个key对应一个value。但如果是在标准的Python解释器里打印上面的字典的话,可读性就会变差了,比如输出会是

{0: -0.6878488995702015, 1: 0.3111764791766575, 2: -0.4951873499757597, 3: 0.1317607911255136, 4: -0.044484140124262925, 5: -1.2855719508755052, 6: -0.2073767192524388}

这样的结果很不方便查看。

2 Running the Jupyter Notebook(运行Jupyter Notebook)

译者:这个系列的所有笔记都是用Jupyter Notebook来写的,这个工具在数据分析方面真得非常好用,建议大家好好学习一个这个工具。书中用了很多图片来说明,这里我就不进行翻译了,直接推荐一些优秀的教程:

blog:http://codingpy.com/article/getting-started-with-jupyter-notebook-part-1/

如果blog看得不懂的话,推荐墙外的朋友直接上Youtube搜索'Jupyter tutorial',上面有很多非常棒的视频教程,一步步来总能学会的。如果没法翻墙的话,可以直接在bilibili上搜索'Jupyter notebook'。

3 Tab Completion(Tab键自动补全)

只要按下tab键,当前命名空间中任何与已输入的字符串相匹配的变量(对象,函数)就会被找出来:

an_apple = 27
an_example = 42 an<Tab>

上面的<Tab>不是输入,只是一个按键说明。除了定义的an_apple和an_example外,我们会看到还有Python关键字and和内置函数any。

当然,我们也可以在任何对象后面输入一个句点以便自动补全方法属性的输入:

b = [1, 2, 3]

b.<Tab>

还可以用在模块上:

import datetime

datetime.<Tab>

除了命名空间,对象或模块属性。还可以输入任何看上去像是文件路径的东西

../datasets/<Tab>

path = '../datasets/<Tab>'

再结合%run命令(之后会介绍),该功能可以减少敲击键盘的次数

Tab自动补全还可以用于函数关键字参数(包括等号=)

4 Introspection(内省)

在变量的前面或后面加上一个问号?,就可以讲有关该对象的一些通用信息显示出来:

b?

这个功能叫做对象内省(object introspection)。如果该对象是一个函数或实例方法,则其docstring也会被显示出来:

def add_number(a, b):
"""
Add two nummbers together Return
------
the_sum: type of arguments
"""
return a + b

然后利用?来显示上面函数中的docstring:

add_number?

使用??还能显示出该函数的源代码:

add_number??

?还有一个用法,即搜索IPython命名空间。一个写字符再配以通配符*,即可显示出所有与该通配符表达式相匹配的名称。

例如,我们可以留出Numpy顶级命名空间中含有“load”的所有函数:

np.*load*?

5 The %run Command (%run命令)

在IPython会话环境中,所有文件都可以通过%run命令当做Python程序来运行。假设我们在ipython_script_test.py中写了一段简单的脚本,如下:

def f(x, y, z):
return (x + y) / z a = 5
b = 6
c = 7.5 result = f(a, b, c)

只要将文件名传给%run就可以运行了:

%run ipython_script_test.py
# 这里假设ipython_script_test.py在当前路径

执行之后,ipython_script_test.py文件中的所有变量也都可以直接访问了

c

7.5

result

1.4666666666666666

如果Python脚本需要用到命令行参数(通过sys.argv访问),可以将参数放到文件路径的后面,就像在命令行上执行那样。

Interrupting running code (中断正在执行的代码)

任何代码在执行时,只要按下“Ctrl-C”,就会应发一个KeyboardInterrupt。绝大部分情况下,python程序都将立即停止执行。

6 Executing Code from the Clipboard (执行剪贴板中的代码)

在IPython中执行代码最简单的方式是粘贴剪贴板中的代码。比如我们希望一段一段地执行脚本,以便查看各个阶段所加载的数据以及产生的结果。

多数情况下,我们能用“Ctrl-Shift-V”讲剪贴板中的代码片段粘贴出来。但这不是万能的。因为这种粘贴方式模拟的是在IPython中逐行输入代码,换行符会被处理成<return>,也就是说,如果代码中有所进,且有空行,IPython会认为缩进在空行哪里结束了。当执行到缩进块后面的代码时,会引发一个IndentationError。例如下面这段代码:

x = 5
y = 7
if x > 5:
x += 1 y = 8

直接粘贴是不行的。(具体的效果大家可以打开terminal,直接试一下。不过这里因为版本的缘故,不会出现书中的错误提示)

但我们可以利用%paste和%cpaste这两个魔术函数。%paste可以承载剪贴板中的一切文本,并在shell中以整体形势执行:

这里要注意一点,先把复制代码,然后在terminal中输入%paste回车。这个命令会自动执行剪贴板上复制的内容。

%cpaste和%paste差不多,只不过它多出一个用于粘贴代码的特殊提示符而已:

建议一直使用%cpaste,因为你可以自己决定是否执行代码,想粘贴多少粘贴多少。

IPython、编辑器、IDE之间的交互

书中说到了PyDev plugin for Eclipse和Python Tools for Visual Studio,都继承了IPython终端应用程序。这里译者只推荐PyCharm,非常强大且易用的IDE。

7 Terminal Keyboard Shortcuts(terminal键盘快捷键)

这里我直接贴出来书中的讲解。因为我的terminal集成了tmux,一些快捷键和IPython有冲突,所以快捷键我并没有怎么用到。

如果对于tmux感兴趣的话,可以看我写的另一个教程,集成了tmux后的terminal会变得更易用:tmux简洁教程及config关键配置

异常和跟踪

如果%run某段脚本或执行某条语句时发生了异常,IPython默认会输出整个调用栈跟踪(traceback),其中还会富商调用栈个点附近的几行代码作为上下文参考。

8 About Magic Commands(关于魔术命令)

Magic Command,这些命令能提供便利。这些命令是以%为前缀的。例如,可以通过%timeit这个magic command来检测任意python语句的执行时间:

a = np.random.randn(100,100)

%timeit np,dot(a,a)

The slowest run took 81.37 times longer than the fastest. This could mean that an intermediate result is being cached.

10000 loops, best of 3: 77 µs per loop

magic command可以看做云星宇IPython系统中的命令行程序。他们大都还有一些“命令行萱萱”,使用?查看其选项:

%reset?

魔术命令默认是可以不带百分号使用的,只要没有定义与其同名的变量即可。这个技术叫做automagic,可以通过%automagic打开或关闭

这里列几个比较重要的magic command

8 Matplotlib Integration(Matplotlib整合)

其实上面我们也用到了,通过使用magic command %matplotlib能够直接在jupyter中画图。

%matplotlib inline
import matplotlib.pyplot as plt plt.plot(np.random.randn(50).cumsum())

2.2 IPython基础的更多相关文章

  1. IPython基础使用_Round2

    目录 目录 前言 软件环境 Ipython的字符串处理 Ipython的魔力函数Magic lsmagic Output所有魔力函数 查看Magic的源码 env 显示系统环境变量 history 查 ...

  2. 【Python数据分析】IPython基础

    一.配置启动IPython 打开cmd窗口,在dos界面下输入ipython,结果报错了!!! 出现这个问题是由于环境变量未配置(前提:已经安装了ipython),那么接下来配置环境变量 我的电脑→右 ...

  3. Ipython基础功能

    ipython:交互式的python命令行 直接在终端敲命令即可进入 安装:pip install ipython 使用:在终端敲“ipython” 与python解释器的使用方法一致 TAB键自动补 ...

  4. (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md

    第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...

  5. IPython+:一个交互式计算和开发环境

    一. IPython基础 代码自动补全:Tab键 可补全内容包括:变量名.函数名.成员变量函数.目录文件 内省(Itrospection) 在变量名之前或之后加上问号(?),这样可以显示这个对象的相关 ...

  6. IPython使用学习笔记

    学习<利用python进行数据分析>第三章 IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用. 安装ipython用pip即可.ps.博主用的是win7系统 ...

  7. 【转】iPython入门技巧

    [转]http://www.cnblogs.com/cuiyubo/p/6823478.html 学习<利用python进行数据分析> 第三章 IPython:一种交互式计算和开发环境的笔 ...

  8. IPython:一种交互式计算和开发环境

    IPython基础 可以通过命令行启动IPython,执行任何Python语句,只需将其输入然后回车. Tab键自动完成 在Shell中输入表达式时,只要按下Tab键,当前命名空间中任何与已输入的字符 ...

  9. 零基础快速掌握Python系统管理视频课程【猎豹网校】

    点击了解更多Python课程>>> 零基础快速掌握Python系统管理视频课程[猎豹网校] 课程目录 01.第01章 Python简介.mp4 02.第02章 IPython基础.m ...

随机推荐

  1. unity 中 Tilemap的使用 笔记

    Coordinate 坐标 创建顺序: Sprite Palette(调色板) Tile Brush Tilemap(瓦片地图) 1.创建画板:保存路径:Palettes/Basic/BasicGro ...

  2. 主打安全 阿里巴巴联合公安部打造PMOS

    4月9日,CITE2015(第三届中国电子信息博览会)在深圳会展中心举行,大会主要以“智能新时代.数字新生活”为主题.说道这,就不得不提国内互联网巨头阿里巴巴.大会中阿里巴巴不仅带来了早前马云曾经在德 ...

  3. Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

    下面代码: public static void main(String[] args) { JSONObject obj = new JSONObject(); obj.put("msg& ...

  4. winform:简单文件资源管理器

    今天全部学习内容的体现就是winform的资源管理器.这个资源管理器主要由一个textbox获取路径,然后在treeview那里通过递归的方式呈现目录树,当用户点击treeview的节点是,会触发Af ...

  5. Java Swing实战(一)JFrame和JTabbedPane容器

    概述: 项目是一个桌面程序,涉及标签和按钮组件.布局管理器组件.面板组件.列表框和下拉框组件等组件,以及Swing事件处理机制. 下面先从最基础的界面开始. /** * @author: lishua ...

  6. IDEA 项目相关基础设置

    导入或者新建项目, 选择文件或者目录, 这里提示了可以选择哪种类型的     相关Tomcat 的配置 下载地址: http://tomcat.apache.org/download-70.cgi#7 ...

  7. 使用css实现炫酷的横屏滚动效果

    炫酷的横屏滚动效果css实现 DEMO: https://codepen.io/kobako/pen/BxVLLm 我们对滚动条都不陌生.平时浏览的网页,进度条通常是垂直方向的,内容从上往下排列.但是 ...

  8. LeetCode SQL:Employees Earning More Than Their Managers

    # Write your MySQL query statement below SELECT a.Name FROM Employee AS a INNER JOIN Employee AS b O ...

  9. git常用命令和场景

    总结: git init //初始化本地git环境 git clone XXX//克隆一份代码到本地仓库 git pull //把远程库的代码更新到工作台 git pull --rebase orig ...

  10. flex自适应宽度显示省略号

    text-overflow:ellipsis文本溢出显示省略号,一般的搭配用法如下: div{ text-overflow:ellipsis; overflow:hidden; white-space ...