命令行输入ipython可打开ipython解释器(Anaconda、EPD的python发行本本身已经携带);命令行输入 jupyter notebook可打开ipython shell基于浏览器的图形界面。
1.每一个python对象都有一个字符串型的引用——docstring,用于保存该对象的简要介绍和使用方法。其内容可用help()函数获取,或者使用ipython shell 独有的?(获取简介和用法)、??(获取python源代码,但如果该对象是使用其他语言编写的则无法获取源代码,此时??与?作用相同)。
2.为自创的函数创建docstring的方法是:在函数定义——def 函数名():之后的一行使用"""docstring内容"""的形式进行。
4.ipython允许使用与linux类似的Tab补全功能:L.xxxTab(这里的Tab指按键)
按照python的惯例,_xxx(即前面带有下划线)表示私有的属性或方法;python私有属性和方法一般使用dunder方法即双下划线法命名
import xxxTab(Tab指按键)也是可以的
from xx import xxTab(Tab表示按键)也是允许的
5.通配符匹配
例:*win,可列出所有以win结尾的对象 ;str.*find*?可找到名称中包含find的字符串方法
6.ipython快捷键
ctrl+a光标移到本行开头
ctrl+e光标移到本行结尾
ctrl+k从光标开始剪切到行末
ctrl+u从行首位开始剪切到光标
ctrl+y将剪切的文本粘帖到光标所在位置
ctrl+t交换前两个字符
通过history可显示历史命令(上下箭头用于获取前/后一个命令)
ctrl+r用于对历史命令的反向搜索
(1)按下ctrl+r,显示(reverse——search),在其后输入字符,将会自动填充与之相近的最近命令,再按一下ctrl+r则匹配次近的一个
(2)def按下ctrl+P,则查找以def开头的最近命令,再按一次,查找次近.....
7.魔法命令——行魔法(以%作前缀),单元魔法(以%%作前缀)
(1)用于粘帖代码块的%paste和%cpaste(用于防止粘帖多行代码块时的缩进、解释符号错误)
%cpaste:打开一个交互式多行输入提示,从而使用户可在该提示下粘帖并执行代码块(一个或多个)
%paste:该命令后跟代码块,可直接应用
(2)执行外部代码的%run
例:%run mysjhdsh.py 则运行mysjhdsh.py程序
更具体的用法,请使用%run?查看
(3)代码运行时间%timeit
a计算接下来一行代码的运行时间,接下来一行的意思是,与%timeit同处一个代码块的下一行,而不能先执行%timeit,再输入代码
b.应用%%timeit(魔法单元),则可以计算接下来一行代码的运行时间
(4)魔法命令?,用于查询魔法命令注释
%magic用于查看魔法函数的通用描述和一些实例 :%lsmagic用于查看可用魔法函数列表
(5)%history -n 1-4 打印前四条历史命令
(6)%rerun 重新执行部分历史命令
(7)%xmode 用于捕获/控制异常,用于轨迹追溯时控制打印信息的数量
(8)%save保存部分历史命令
(9)捕获异常后%debug打开调试界面;%pdb用于控制发现异常时是否自动启动调试器;github.com/gotcha/ipdb可查看调试命令
8.输入输出对象
ipython中的In,Out其实分别是一个预定义的列表和字典,用于记录所有输入命令/所有(将输入数字映射到的)输出
9._[x]等价于Out[x]
10.行尾加分号——》禁止输出(输出既不显示,也不存入Out路径下,只是默默执行了)
11.可用!作为前缀在ipython执行shell 命令,例如:!pwd !ls等(备注:!cd并不工作,应使用%cd,因为Notebook中的命令是在shell的分支里进行的)
注意:%automatic可用于设定一些shell魔法函数不需%即可执行
12.可用通过赋值符将shell命令的输入存入一个变量
例:xx=!pwd
13.type(x)查询x的类型
14.代码分析和计时
————过早优化是最大的错误!!!!!!!!
A代码段计时%time;%timeit
B分析整个脚本%prun
C逐行分析%lprun(需要 pip install line_profiler;%load_ext line_profiler)
D内存分析%memit和%mprun(需要memory_profiler包)
15.nbviewer.ipython.org提供了一些ipython实例
16建议浏览ipython主页和(有趣的ipython集合);建议关注ipython主要贡献者Fernando Perez和Brian Granger在PyCon,SciPy,PyData会议中的发言。