第一章—IPython:超越python(笔记)

2018-12-24  本文已影响0人  zzxzzxzzx

命令行输入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会议中的发言。

上一篇下一篇

猜你喜欢

热点阅读