mirror of
https://github.com/apachecn/ailearning.git
synced 2026-02-10 13:55:05 +08:00
407 lines
6.4 KiB
Markdown
407 lines
6.4 KiB
Markdown
# Ipython 解释器
|
||
|
||
## 进入ipython
|
||
|
||
通常我们并不使用**Python**自带的解释器,而是使用另一个比较方便的解释器——**ipython**解释器,命令行下输入:
|
||
|
||
```py
|
||
ipython
|
||
```
|
||
|
||
即可进入**ipython**解释器。
|
||
|
||
所有在**python**解释器下可以运行的代码都可以在**ipython**解释器下运行:
|
||
|
||
In [1]:
|
||
|
||
```py
|
||
print "hello, world"
|
||
|
||
```
|
||
|
||
```py
|
||
hello, world
|
||
|
||
```
|
||
|
||
可以进行简单赋值操作:
|
||
|
||
In [2]:
|
||
|
||
```py
|
||
a = 1
|
||
|
||
```
|
||
|
||
直接在解释器中输入变量名,会显示变量的值(不需要加`print`):
|
||
|
||
In [3]:
|
||
|
||
```py
|
||
a
|
||
|
||
```
|
||
|
||
Out[3]:
|
||
|
||
```py
|
||
1
|
||
```
|
||
|
||
In [4]:
|
||
|
||
```py
|
||
b = [1, 2, 3]
|
||
|
||
```
|
||
|
||
## ipython magic命令
|
||
|
||
**ipython**解释器提供了很多以百分号`%`开头的`magic`命令,这些命令很像linux系统下的命令行命令(事实上有些是一样的)。
|
||
|
||
查看所有的`magic`命令:
|
||
|
||
In [5]:
|
||
|
||
```py
|
||
%lsmagic
|
||
|
||
```
|
||
|
||
Out[5]:
|
||
|
||
```py
|
||
Available line magics:
|
||
%alias %alias_magic %autocall %automagic %autosave %bookmark %cd %clear %cls %colors %config %connect_info %copy %ddir %debug %dhist %dirs %doctest_mode %echo %ed %edit %env %gui %hist %history %install_default_config %install_ext %install_profiles %killbgscripts %ldir %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %macro %magic %matplotlib %mkdir %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %ren %rep %rerun %reset %reset_selective %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
|
||
|
||
Available cell magics:
|
||
%%! %%HTML %%SVG %%bash %%capture %%cmd %%debug %%file %%html %%javascript %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
|
||
|
||
Automagic is ON, % prefix IS NOT needed for line magics.
|
||
```
|
||
|
||
`line magic` 以一个百分号开头,作用与一行;
|
||
|
||
`cell magic` 以两个百分号开头,作用于整个cell。
|
||
|
||
最后一行`Automagic is ON, % prefix IS NOT needed for line magics.`说明在此时即使不加上`%`也可以使用这些命令。
|
||
|
||
使用 `whos` 查看当前的变量空间:
|
||
|
||
In [6]:
|
||
|
||
```py
|
||
%whos
|
||
|
||
```
|
||
|
||
```py
|
||
Variable Type Data/Info
|
||
----------------------------
|
||
a int 1
|
||
b list n=3
|
||
|
||
```
|
||
|
||
使用 `reset` 重置当前变量空间:
|
||
|
||
In [7]:
|
||
|
||
```py
|
||
%reset -f
|
||
|
||
```
|
||
|
||
再查看当前变量空间:
|
||
|
||
In [8]:
|
||
|
||
```py
|
||
%whos
|
||
|
||
```
|
||
|
||
```py
|
||
Interactive namespace is empty.
|
||
|
||
```
|
||
|
||
使用 `pwd` 查看当前工作文件夹:
|
||
|
||
In [9]:
|
||
|
||
```py
|
||
%pwd
|
||
|
||
```
|
||
|
||
Out[9]:
|
||
|
||
```py
|
||
u'C:\\Users\\lijin\\Documents\\Git\\python-tutorial\\01\. python tools'
|
||
```
|
||
|
||
使用 `mkdir` 产生新文件夹:
|
||
|
||
In [10]:
|
||
|
||
```py
|
||
%mkdir demo_test
|
||
|
||
```
|
||
|
||
使用 `cd` 改变工作文件夹:
|
||
|
||
In [11]:
|
||
|
||
```py
|
||
%cd demo_test/
|
||
|
||
```
|
||
|
||
```py
|
||
C:\Users\lijin\Documents\Git\python-tutorial\01\. python tools\demo_test
|
||
|
||
```
|
||
|
||
使用 `writefile` 将cell中的内容写入文件:
|
||
|
||
In [12]:
|
||
|
||
```py
|
||
%%writefile hello_world.py
|
||
print "hello world"
|
||
|
||
```
|
||
|
||
```py
|
||
Writing hello_world.py
|
||
|
||
```
|
||
|
||
使用 `ls` 查看当前工作文件夹的文件:
|
||
|
||
In [13]:
|
||
|
||
```py
|
||
%ls
|
||
|
||
```
|
||
|
||
```py
|
||
驱动器 C 中的卷是 System
|
||
卷的序列号是 DC4B-D785
|
||
|
||
C:\Users\lijin\Documents\Git\python-tutorial\01\. python tools\demo_test 的目录
|
||
|
||
2015/09/18 11:32 <DIR> .
|
||
2015/09/18 11:32 <DIR> ..
|
||
2015/09/18 11:32 19 hello_world.py
|
||
1 个文件 19 字节
|
||
2 个目录 121,763,831,808 可用字节
|
||
|
||
```
|
||
|
||
使用 `run` 命令来运行这个代码:
|
||
|
||
In [14]:
|
||
|
||
```py
|
||
%run hello_world.py
|
||
|
||
```
|
||
|
||
```py
|
||
hello world
|
||
|
||
```
|
||
|
||
删除这个文件:
|
||
|
||
In [15]:
|
||
|
||
```py
|
||
import os
|
||
os.remove('hello_world.py')
|
||
|
||
```
|
||
|
||
查看当前文件夹,`hello_world.py` 已被删除:
|
||
|
||
In [16]:
|
||
|
||
```py
|
||
%ls
|
||
|
||
```
|
||
|
||
```py
|
||
驱动器 C 中的卷是 System
|
||
卷的序列号是 DC4B-D785
|
||
|
||
C:\Users\lijin\Documents\Git\python-tutorial\01\. python tools\demo_test 的目录
|
||
|
||
2015/09/18 11:32 <DIR> .
|
||
2015/09/18 11:32 <DIR> ..
|
||
0 个文件 0 字节
|
||
2 个目录 121,763,831,808 可用字节
|
||
|
||
```
|
||
|
||
返回上一层文件夹:
|
||
|
||
In [17]:
|
||
|
||
```py
|
||
%cd ..
|
||
|
||
```
|
||
|
||
```py
|
||
C:\Users\lijin\Documents\Git\python-tutorial\01\. python tools
|
||
|
||
```
|
||
|
||
使用 `rmdir` 删除文件夹:
|
||
|
||
In [18]:
|
||
|
||
```py
|
||
%rmdir demo_test
|
||
|
||
```
|
||
|
||
使用 `hist` 查看历史命令:
|
||
|
||
In [19]:
|
||
|
||
```py
|
||
%hist
|
||
|
||
```
|
||
|
||
```py
|
||
print "hello, world"
|
||
a = 1
|
||
a
|
||
b = [1, 2, 3]
|
||
%lsmagic
|
||
%whos
|
||
%reset -f
|
||
%whos
|
||
%pwd
|
||
%mkdir demo_test
|
||
%cd demo_test/
|
||
%%writefile hello_world.py
|
||
print "hello world"
|
||
%ls
|
||
%run hello_world.py
|
||
import os
|
||
os.remove('hello_world.py')
|
||
%ls
|
||
%cd ..
|
||
%rmdir demo_test
|
||
%hist
|
||
|
||
```
|
||
|
||
## ipython 使用
|
||
|
||
使用 `?` 查看函数的帮助:
|
||
|
||
In [20]:
|
||
|
||
```py
|
||
sum?
|
||
|
||
```
|
||
|
||
使用 `??` 查看函数帮助和函数源代码(如果是用**python**实现的):
|
||
|
||
In [21]:
|
||
|
||
```py
|
||
# 导入numpy和matplotlib两个包
|
||
%pylab
|
||
# 查看其中sort函数的帮助
|
||
sort??
|
||
|
||
```
|
||
|
||
```py
|
||
Using matplotlib backend: Qt4Agg
|
||
Populating the interactive namespace from numpy and matplotlib
|
||
|
||
```
|
||
|
||
**ipython** 支持使用 `<tab>` 键自动补全命令。
|
||
|
||
使用 `_` 使用上个cell的输出结果:
|
||
|
||
In [22]:
|
||
|
||
```py
|
||
a = 12
|
||
a
|
||
|
||
```
|
||
|
||
Out[22]:
|
||
|
||
```py
|
||
12
|
||
```
|
||
|
||
In [23]:
|
||
|
||
```py
|
||
_ + 13
|
||
|
||
```
|
||
|
||
Out[23]:
|
||
|
||
```py
|
||
25
|
||
```
|
||
|
||
可以使用 `!` 来执行一些系统命令。
|
||
|
||
In [24]:
|
||
|
||
```py
|
||
!ping baidu.com
|
||
|
||
```
|
||
|
||
```py
|
||
正在 Ping baidu.com [180.149.132.47] 具有 32 字节的数据:
|
||
来自 180.149.132.47 的回复: 字节=32 时间=69ms TTL=49
|
||
来自 180.149.132.47 的回复: 字节=32 时间=64ms TTL=49
|
||
来自 180.149.132.47 的回复: 字节=32 时间=61ms TTL=49
|
||
来自 180.149.132.47 的回复: 字节=32 时间=63ms TTL=49
|
||
|
||
180.149.132.47 的 Ping 统计信息:
|
||
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
|
||
往返行程的估计时间(以毫秒为单位):
|
||
最短 = 61ms,最长 = 69ms,平均 = 64ms
|
||
|
||
```
|
||
|
||
当输入出现错误时,**ipython**会指出出错的位置和原因:
|
||
|
||
In [25]:
|
||
|
||
```py
|
||
1 + "hello"
|
||
|
||
```
|
||
|
||
```py
|
||
---------------------------------------------------------------------------
|
||
TypeError Traceback (most recent call last)
|
||
<ipython-input-25-d37bedb9732a> in <module>()
|
||
----> 1 1 + "hello"
|
||
|
||
TypeError: unsupported operand type(s) for +: 'int' and 'str'
|
||
``` |