Python有不少解释器,默认使用的是CPython。而IPython,interactive python可以提供交互式开发环境;是Jupyter的内核。如果要使用Jupyter,使用的就是IPython开发环境。

1、In/Out

  • ipython的特征之一是命令的前缀类似:In[1];而输出结果的前缀类似:Out[1]

  • 前者称为输入单元格(input cell),可以输入单行/多行命令;后者称为输出单元格(output cell)。

  • In对象本质上是个列表,按顺序记录所有的命令;Out对象本质是一个字典,将输入数字映射到相应的输出。

1
2
3
4
5
6
7
8
9
In [1]: a=1
In [2]: test="hello"
In [3]: 1+1

#如上为历史记录
print(In)
# ['', 'a=1', 'test="hello"', '1+1', 'print(In)']
print(Out)
# {3: 2}

如上,并不是所有的输入单元格都有输出内容。比较特殊的是print()语句本质是没有输出的,尽管它的功能是打印一些语句。

2、?问号

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## (1) 对象名(函数/方法)+?:获取简要帮助文档
len?
range?
list.append?

## (2) 正则表达式+?:列出当前命令空间中,所有符合匹配条件的对象名
anynumber = 123
anyway = "test"
an*?
# any
# anynumber
# anyway

3、%百分号

%command:行魔法;%%command:单元魔法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
## (1) %paste: 复制粘贴别人带有提示符前缀的代码块( %cpaste:交互式多行复制)

## (2) %run ***.py: 在python环境执行python脚本

## (3) %timeit: 计算代码运行时间(%%timeit: 计算多行代码运行时间)
%timeit print("hello, world")
# 12.1 µs ± 137 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)

## (4) %history 查看历史命令

## (5) %automagic 是否简化 行魔法 命令的前缀%
%automagic
# Automagic is ON, % prefix IS NOT needed for line magics.

## (5) 其它魔法函数
%lsmagic  #列出所有的魔法函数
%timeit?  #获取某一个魔法函数的帮助文档

4、执行shell命令

  • 之前了解到在python中可使用os模块的system方法执行shell命令。
  • 在ipython解释器中,对于一些常用shell命令,可直接使用%command。例如%cd,%pwd%mkdir newfolder等等,可通过%lsmagic 查看
  • %automagic设置为On的状态下,可以不写前缀%,就完全像shell命令一样
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
%ls
# Miniconda3-latest-Linux-x86_64.sh  Untitled.ipynb  miniconda3/  test/

pwd
# '/home/shensuo'
nowpath=%pwd
print(nowpath)
# /home/shensuo

conda info --envs
# #conda environments:
# #
#  base                  *  /home/shensuo/miniconda3