学习 Python 的利器,IPython shell 功能介绍
2017-02-26
安装 IPython 环境
# 安装 ipython
pip install ipython
# 安装 numpy 科学计算库,例子中有使用
pip install numpy
启动 ipython
可以在 ipython shell 下面写 python 代码,回车执行
# 启动 ipython shell
$ ipython
(py3env) servadmin@debian:~/test # ipython
Python 3.4.2 (default, Oct 8 2014, 10:45:20)
Type "copyright", "credits" or "license" for more information.
IPython 4.1.2 -- 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]: import numpy as np
In [2]: a = 333
In [3]: b = 'hello world'
In [4]: a
Out[4]: 333
In [5]: b
Out[5]: 'hello world'
In [6]:
- In 表示是用户输入的 python 代码,或者命令
- In 如果输入一个变量,执行后就会在 Out 输出变量的字符串形式
- Out 后面是代码执行的输出
主要功能
Tab 键自动完成
tab 的自动完成是对标准 python shell 的增强,在 shell 中输入表达式时按下 tab 键, 可以补全与已输入的字符串相匹配的变量、对象、函数等
# 输入未完成的时候使用键盘的 tab 可以补全
In [6]: import num
numbers numpy
In [6]: a = [3, 4, 5, 6]
# 补全对象方法
In [7]: a.
a.append a.clear a.copy a.count a.extend a.index a.insert a.pop a.remove a.reverse a.sort
# 补全模块
In [8]: import datetime
In [9]: datetime.
datetime.MAXYEAR datetime.date datetime.datetime_CAPI datetime.timedelta datetime.tzinfo
datetime.MINYEAR datetime.datetime datetime.time datetime.timezone
# 补全文件名, system ls 命令列出当前工作目录下的文件(给大家看下)
In [9]: system ls
Out[9]:
['nginx.conf',
'parse_post.py',
'__pycache__',
'qn.py',
'testm.py',
'test_os.py',
'test_post.py',
'test_prog_mem.py',
'upload.py']
# 用 tab 补全文件名
In [10]: a = 'nginx.conf'
运行脚本
# test.py
def test():
print('hello world')
if __name__ == '__main__':
test()
In [25]: %run test.py
hello world
内省
- 在变量前面或者后面加一个 ?,可以现实对象的信息
- 搜索命名空间,使用通配符 * 与 ?,可以搜索与通配符表达式相匹配的名称
- 在函数后面使用 ??,显示函数的源代码
# 查看变量信息
In [10]: a?
Type: list
String form: [3, 4, 5, 6]
Length: 4
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable items
# 定义函数
In [14]: def test():
....: print('hello world')
....:
# 查看函数源代码
In [15]: test??
Signature: test()
Source:
def test():
print('hello world')
File: ~/test/<ipython-input-14-76b60219b2ae>
Type: function
# 通配符搜索
In [16]: datetime.*time*?
datetime.datetime
datetime.datetime_CAPI
datetime.time
datetime.timedelta
datetime.timezone
一些特殊的命令(magic)
命令 | 描述 |
---|---|
%quickref | 显示 IPython 快速参考手册 |
%magic | 显示特殊命令文档 |
%debug | 从异常跟踪进入交互式调试器 |
%hist | 打印命令输入历史 |
%run | 在 IPython 中执行脚本文件 |
%time | 打印语句的执行时间 |
%timeit | 多次执行代码,计算平均执行时间 |
%who, %who_ls, %whos | 显示在 IPython shell 中定义的变量信息 |
键盘快捷键 (有一部分在 windows 不可用)
命令 | 描述 |
---|---|
ctrl-p, 向上键 | 历史中上一条语句、命令 |
ctrl-n, 向下键 | 历史中下一条语句、命令 |
ctrl-a | 光标移动到行首 |
ctrl-e | 光标移动到行尾 |
ctrl-u | 删除从当前光标位置到行首的内容 |
ctrl-k | 删除从当前光标位置到行尾的内容 |
ctrl-l | 清屏 |
与操作系统交互,调用系统命令
命令 | 描述 |
---|---|
!command | 在系统 shell 中执行命令 |
var=!command args | 执行命令,把输出保存到变量中 |
%cd directory | 更改工作目录 |
%pwd | 返回当前工作目录 |
%dhist | 打印目录访问记录 |
%env | 打印系统环境变量 |
# 调用系统命令,查看网卡
In [64]: !ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:da:8e:49 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:feda:8e49/64 scope link
valid_lft forever preferred_lft forever
# 保存网卡信息到变量中
In [65]: a = !ip a | grep 'inet'
In [66]: a
Out[66]:
[' inet 127.0.0.1/8 scope host lo',
' inet6 ::1/128 scope host ',
' inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0',
' inet6 fe80::a00:27ff:feda:8e49/64 scope link ']