ipython是_关于 IPython 的简介
IPython 是 Python shell 的增强版,它鼓励一种「执行-探索」式(execute explore) 的工作模式,而不是其他许多语言那种「编辑-编译-运行」(edit-compile-run) 的传统工作模式。而且,它与操作系统 shell 和文件系统之间也有非常紧密的集成,因此,在数据分析工作中得到广泛应用。
1 基础操作
IPython 可通过 pip 进行直接安装 pip install ipython,使用命令行启动 IPython 与启动标准 Python 解释器类似:
$ ipython
Python 3.7.4 (default, Jul 9 2019, 18:13:23)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.7.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from datetime import d
date dbm
datetime dim
datetime_CAPI
相较于 Python 标准解释器,IPython 提供的一些额外功能包括:
使用 Tab 实现自动补全功能。
使用问号 ? 呈现对象的说明。
提供了一系列以 % 开头的魔术命令为常见任务的执行提供便利。
提供了额外的绘图功能。
可使用操作系统中的命令。
在 IPython 环境中,我们可以直接使用 %quickref 查看 IPython 的参考手册,也可以使用 %magic 来查看 IPython 中魔术命令的信息,以更好的使用 IPython 工具。
In [1]: %quickref
IPython -- An enhanced Interactive Python - Quick Reference Card
================================================================
obj?, obj?? : Get help, or more help for object (also works as
?obj, ??obj).
?foo.*abc* : List names in 'foo' containing 'abc' in them.
%magic : Information about IPython's 'magic' % functions.
Magic functions are prefixed by % or %%, and typically take their arguments
without parentheses, quotes or even commas for convenience. Line magics take a
single % and cell magics are prefixed with two %%.
Example magic function calls:
:
Tips: IPython 可进行一些自定义的配置,该配置文件位于 ~/.ipython 或 ~/.config/.ipython 目录(Unix)和 %HOME%/.ipython 目录(Windows)中。
2 命令历史
IPython 与 Python 解释器一样,采用「逐行输入代码」并「立即执行」的方式,它们均可用Ctrl + P 或 ↑ 查找执行过的命令、使用 Ctrl + N 或 ↓查找(当前查找位置)命令后执行的命令。
此外,IPython 提供了更强的输入输出变量管理以及记录功能:
最近两次执行的结果 (Out) 分别保存在 _ 及 __ 变量中。而且,IPython 还采用 _iN, _N 的方式将所有输入及输出的历史记录进行保存 ~ 其中 N 为行号:
In [1]: 2 + 4 / 1.2
Out[1]: 5.333333333333334
In [2]: _
Out[2]: 5.333333333333334
In [3]: 3 ** 5
Out[3]: 243
In [4]: 1 + 7*9
Out[4]: 64
In [5]: __
Out[5]: 243
In [6]: _i3
Out[6]: '3 ** 5'
In [7]: _3
Out[7]: 243
同时,因在 _iN 中保存的输入历史为字符串,使用 eval(_iN) 即可重新执行指定行中的代码:
In [8]: eval(_i4) # eval('1 + 7*9')
Out[8]: 64
对于在 IPython 中执行过的命令,可通过 %logstart 将之保存在 Python 文件中:
In [9]: %logstart
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
该魔术命令会将截止目前输入的命令保存在当前文件夹下的 ipython_log.py 文件中,并将后续执行的命令也会添加进去。当前 ipython_log.py 文件中的内容为:
# IPython log file
2 + 4 / 1.2
_
3 ** 5
1 + 7*9
__
_i3
_3
eval(_i4)
get_ipython().run_line_magic('logstart', '')
3 与操作系统交互
IPython 中可执行系统中的命令,以 ! 开头的命令行后的内容需要在系统 shell 中执行,并且可将执行的结果存放在变量中:
In [22]: !ls
IPython.md data_science.md pandas.ipynb
Jupyter.ipynb README.md
In [23]: markdown_file = '*.md'
In [24]: !ls $markdown_file
IPython.md README.md data_science.md
In [25]: markdown = !ls $markdown_file
In [26]: markdown
Out[26]: ['IPython.md', 'README.md', 'data_science.md']
如上例所示,IPython 中执行 ! 开始的系统命令时,还可以执行使用当前环境中的变量 ~ 以 $ 开头。
Tips: 我们同样可以使用「魔术命令」 %alias 为 shell 命令自定义简称 ~ 仅对当前 IPython 会话有效。要永久有效,可在配置文件中进行设定;也可使用 %bookmark 命令来设定常用目录的简写。
4 分析工具
IPython 同样提供了一些代码分析工具,如代码执行时间的分析工具 %time 和 %timeit、基本的性能分析 %prun 和 %run -p 等。
在 Python 代码中,我们可以借助于 time 模块来测算代码运行的时间:
import time
start = time.time()
# do somthing
duration = time.time() - start
而 IPython 中提供了 %time 和 %timeit 两个魔术命令用于简化测算代码运行时间工作:
%time:整体执行一次,给出执行时间;
%timeit:多次执行,给出平均时间。
In [42]: %time 'foobar'.startswith('foo')
CPU times: user 3 µs, sys: 0 ns, total: 3 µs
Wall time: 5.96 µs
Out[42]: True
In [43]: %time 'foobar'[:3] == 'foo'
CPU times: user 2 µs, sys: 1 µs, total: 3 µs
Wall time: 5.01 µs
Out[43]: True
In [44]: %timeit 'foobar'.startswith('foo')
137 ns ± 0.29 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [45]: %timeit 'foobar'[:3] == 'foo'
119 ns ± 0.33 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
使用 %time 运行一次给出运行时间可能会导致一定的偏差;%timeit 以多次运行给出平均时间方式更加精准。
此外,%run -p 命令为 Python 的性能分析工具 cProfile 模块提供了一个 IPython 的接口,在执行一个程序或代码块时,可记录各函数所耗费的时间。
而 %debug 命令则可调用 IPython 中增强版的 pdb 对上一句执行的命令进行调试。
5 参考资料
本作品采用《CC 协议》,转载必须注明作者和本文链接
ipython是_关于 IPython 的简介相关推荐
- ipython版本_维护ipython noteb的两个版本
经过一些实验,我得出结论,最好通过处理笔记本的JSON代码来解决这个问题.版本控制系统不是正确的方法,原因如下:添加或删除单元格时使用JSONdoesn't diff very well.微小的改变会 ...
- appium java 虫师_利用 IPython 来学习 Appium
Appium简介 Appium是目前非常流行的移动端自动化测试工具,它是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.同时 ...
- ipython如何退出_使用iPython / Spyder从Python退出的问题
以前有人问过这个问题,但我在这类相关问题上尝试过解决办法,但都无济于事. 我在使用python的exit命令时遇到了问题,并且排除了使用普通python 3运行的代码的问题.当我使用ipython或S ...
- ipython notebook_50个关于IPython的使用技巧,get起来!
什么是IPython?可能很多人已经在用,却不知道它到底是什么.根据维基百科的解释: IPython是一种基于Python的交互式解释器,提供了强大的编辑和交互功能. IPython拥有: 满足你各种 ...
- ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...
- IPv6基础_邻居发现协议简介
IPv6基础_邻居发现协议简介 一.NDP(NeighborDiscoveryProtocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP.ICMP路由器发现和ICMP重定向等 ...
- Unity学习日志_车轮碰撞器简介
Unity学习日志_车轮碰撞器简介 1. 简介: 车轮碰撞器是一种针对地面车辆的特殊碰撞体.他有内置的碰撞检测.车轮物理系统和有滑胎摩擦的参考体.除了车轮,该碰撞体也可以用于其他游戏对象. 属性: M ...
- python工作区是什么_在IPython中保存工作区
EDIT: this answer (and gist) has been modified to work for IPython 6 我添加了一个有点特别的解决方案,它使用来自IPython的%s ...
- python怎么重新启动内核_通过“ipython kernel”重新启动ipython内核
我有一个ipython内核通过ipython kernel 这使我可以选择从不同的客户机(控制台.qtconsole甚至通过ssh从其他机器)连接到这个内核.在 最简单的情况是通过以下方式进行本地连接 ...
最新文章
- 计算机视觉常用图像数据集标记平台
- Windows Server 2003 网络互访新特性
- PTA 数据结构与算法题目集(中文)
- mysql3错误_第3行MYSQL语法错误
- LeetCode 83. Remove Duplicates from Sorted List
- Android中Scrollview、ViewPager冲突问题汇总(已解决)
- 设计模式之行为模式(1)-状态、策略、责任链、访问者
- 数据:以太坊2.0合约质押新增7.47万ETH
- HDU1066 Last non-zero Digit in N!【大数+模除】
- 【chrome】插件开发-教程00(如何开发插件)
- 2022.02.19四座楼苹果园
- Mstar的Monitor方案OSD 菜单制作(二)————主体架构
- 斯坦福「AI百年研究」首份报告:2030年的人工智能与生活
- 软件测试bug日志信息,软件测试bug收集策略 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- super()的两个参数
- 美团后台开发笔试-数字字符
- Ranklib部分源码分析
- 线性代数笔记(4) 特征向量/值与基变换
- 工厂怎么使用oracle系统,如何用MES系统建立智能工厂?
- jsonl后缀名是什么意思