Ipython 解释器

进入ipython

通常我们并不使用Python自带的解释器,而是使用另一个比较方便的解释器——ipython解释器,命令行下输入:

  1. ipython

即可进入ipython解释器。

所有在python解释器下可以运行的代码都可以在ipython解释器下运行:

In [1]:

  1. print "hello, world"
  1. hello, world

可以进行简单赋值操作:

In [2]:

  1. a = 1

直接在解释器中输入变量名,会显示变量的值(不需要加print):

In [3]:

  1. a

Out[3]:

  1. 1

In [4]:

  1. b = [1, 2, 3]

ipython magic命令

ipython解释器提供了很多以百分号%开头的magic命令,这些命令很像linux系统下的命令行命令(事实上有些是一样的)。

查看所有的magic命令:

In [5]:

  1. %lsmagic

Out[5]:

  1. Available line magics:
  2. %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
  3.  
  4. Available cell magics:
  5. %%! %%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
  6.  
  7. 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]:

  1. %whos

  1. Variable Type Data/Info

a int 1 b list n=3

使用 reset 重置当前变量空间:

In [7]:

  1. %reset -f

再查看当前变量空间:

In [8]:

  1. %whos
  1. Interactive namespace is empty.

使用 pwd 查看当前工作文件夹:

In [9]:

  1. %pwd

Out[9]:

  1. u'C:\\Users\\lijin\\Documents\\Git\\python-tutorial\\01. python tools'

使用 mkdir 产生新文件夹:

In [10]:

  1. %mkdir demo_test

使用 cd 改变工作文件夹:

In [11]:

  1. %cd demo_test/
  1. C:\Users\lijin\Documents\Git\python-tutorial\01. python tools\demo_test

使用 writefile 将cell中的内容写入文件:

In [12]:

  1. %%writefile hello_world.py
  2. print "hello world"
  1. Writing hello_world.py

使用 ls 查看当前工作文件夹的文件:

In [13]:

  1. %ls
  1. 驱动器 C 中的卷是 System
  2. 卷的序列号是 DC4B-D785
  3.  
  4. C:\Users\lijin\Documents\Git\python-tutorial\01. python tools\demo_test 的目录
  5.  
  6. 2015/09/18 11:32 <DIR> .
  7. 2015/09/18 11:32 <DIR> ..
  8. 2015/09/18 11:32 19 hello_world.py
  9. 1 个文件 19 字节
  10. 2 个目录 121,763,831,808 可用字节

使用 run 命令来运行这个代码:

In [14]:

  1. %run hello_world.py
  1. hello world

删除这个文件:

In [15]:

  1. import os
  2. os.remove('hello_world.py')

查看当前文件夹,hello_world.py 已被删除:

In [16]:

  1. %ls
  1. 驱动器 C 中的卷是 System
  2. 卷的序列号是 DC4B-D785
  3.  
  4. C:\Users\lijin\Documents\Git\python-tutorial\01. python tools\demo_test 的目录
  5.  
  6. 2015/09/18 11:32 <DIR> .
  7. 2015/09/18 11:32 <DIR> ..
  8. 0 个文件 0 字节
  9. 2 个目录 121,763,831,808 可用字节

返回上一层文件夹:

In [17]:

  1. %cd ..
  1. C:\Users\lijin\Documents\Git\python-tutorial\01. python tools

使用 rmdir 删除文件夹:

In [18]:

  1. %rmdir demo_test

使用 hist 查看历史命令:

In [19]:

  1. %hist
  1. print "hello, world"
  2. a = 1
  3. a
  4. b = [1, 2, 3]
  5. %lsmagic
  6. %whos
  7. %reset -f
  8. %whos
  9. %pwd
  10. %mkdir demo_test
  11. %cd demo_test/
  12. %%writefile hello_world.py
  13. print "hello world"
  14. %ls
  15. %run hello_world.py
  16. import os
  17. os.remove('hello_world.py')
  18. %ls
  19. %cd ..
  20. %rmdir demo_test
  21. %hist

ipython 使用

使用 ? 查看函数的帮助:

In [20]:

  1. sum?

使用 ?? 查看函数帮助和函数源代码(如果是用python实现的):

In [21]:

  1. # 导入numpy和matplotlib两个包
  2. %pylab
  3. # 查看其中sort函数的帮助
  4. sort??
  1. Using matplotlib backend: Qt4Agg
  2. Populating the interactive namespace from numpy and matplotlib

ipython 支持使用 <tab> 键自动补全命令。

使用 _ 使用上个cell的输出结果:

In [22]:

  1. a = 12
  2. a

Out[22]:

  1. 12

In [23]:

  1. _ + 13

Out[23]:

  1. 25

可以使用 ! 来执行一些系统命令。

In [24]:

  1. !ping baidu.com
  1. 正在 Ping baidu.com [180.149.132.47] 具有 32 字节的数据:
  2. 来自 180.149.132.47 的回复: 字节=32 时间=69ms TTL=49
  3. 来自 180.149.132.47 的回复: 字节=32 时间=64ms TTL=49
  4. 来自 180.149.132.47 的回复: 字节=32 时间=61ms TTL=49
  5. 来自 180.149.132.47 的回复: 字节=32 时间=63ms TTL=49
  6.  
  7. 180.149.132.47 Ping 统计信息:
  8. 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
  9. 往返行程的估计时间(以毫秒为单位):
  10. 最短 = 61ms,最长 = 69ms,平均 = 64ms

当输入出现错误时,ipython会指出出错的位置和原因:

In [25]:

  1. 1 + "hello"
  1. ---------------------------------------------------------------------------
  2. TypeError Traceback (most recent call last)
  3. <ipython-input-25-d37bedb9732a> in <module>()
  4. ----> 1 1 + "hello"
  5.  
  6. TypeError: unsupported operand type(s) for +: 'int' and 'str'

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/01-python-tools/01.02-ipython-interpreter.ipynb