Files
ailearning/docs/da/003.md
2020-10-19 21:08:55 +08:00

407 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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'
```