第一章 IPython
第一章 IPython
- 当有人找你帮忙解决问题时,大多数时候,重要的不是知道答案,而是知道如何找到答案。
- Ipython可以通过符号?用于浏览对象、函数等的文档,符号??浏览源代码,Tab键用于自动补全。、
- 常用的魔法命令
- 粘贴代码块%paste %cpaste
- 当从外部粘贴代码到解释器时,常常会出现不可预料的错误,这时可以用%paste魔法函数解决包含符号的多行输入问题
- 也可以使用%cpaste,该命令打开一个交互式多行输入提示,可以在这个提示下粘贴并且执行一个或者多个代码块。
- 执行外部代码 %run
- 在ipython会话中运行之前的代码可以使用%run魔法命令
- 比如之前有一个scrip.py文件,可以在ipython中使用
- %run scrip.py
- 来运行该文件,之后该文件中的所有函数都可以直接在ipython使用。
- 比如之前有一个scrip.py文件,可以在ipython中使用
- 在ipython会话中运行之前的代码可以使用%run魔法命令
- 计算代码运行时间 %timeit
- %timeit可以自动计算接下来一行的python语句的执行时间
- %timeit python语句
- 对于多行语句,可以使用%%timeit来处理多行输入。
- %timeit可以自动计算接下来一行的python语句的执行时间
- 获得可用魔法函数的通用描述以及一些示例:%magic
- 获得所有可用魔法函数的列表:%lsmagic
- 粘贴代码块%paste %cpaste
- IPython输入和输出
- IPython中有In[1]:/Out[1]这样的提示,该提示其实是In和Out的Python变量。
- In对象是一个列表,按照顺序记录所有的命令。
- Out对象是一个字典,它将输入数字映射到相应的输出。
- 如果希望使用以前计算的结果,可以使用类似Out[2]**2 + out[3]**2这样的方式来调用以前的结果
- 禁止输出
- 当执行命令时,不希望该命令进行输出,则可以在该命令后添加分号;,该输出结果就不会显示在屏幕上,也不会存储在out路径下。
- 一次性获取此前所有的输入历史:%history
- 参数 -n 1-4 :输出倒数1-4条
- 重新执行部分历史命令:%rerun
- 将部分历史命令保存到一个文件中:%save
- IPython和shell命令
- 在IPython终端可以直接执行shell命令的语法,一行中任何在!之后的内容将不会通过Python内核运行,而是通过系统命令行运行。
- 但不能直接通过!cd来导航文件系统,原因是notebook中的shell命令时在一个临时的分支shell中执行的,如果希望用一种更持久的方式更改工作路径,需要使用%cd魔法命令:
- %cd myproject
- 这种方式被称作自动魔法函数,可以通过%automagic魔法函数进行翻转
- 其它可用的类似shell的魔法函数还有%cat %cp %env %ls %man %mkdir %more %mv %pwd %rm %rmdir
- 如果automatic被打开,以上任何一个魔法命令都可以省略%符号,这样就可以把IPython提示符当作普通shell一样使用
- 但不能直接通过!cd来导航文件系统,原因是notebook中的shell命令时在一个临时的分支shell中执行的,如果希望用一种更持久的方式更改工作路径,需要使用%cd魔法命令:
- 在IPython终端可以直接执行shell命令的语法,一行中任何在!之后的内容将不会通过Python内核运行,而是通过系统命令行运行。
- 代码分析与计时
- %time:对单个语句的执行时间进行计时
- %timeit:对单个语句的重复执行进行计时,以获得更高的准确度
- %prun:利用分析器运行代码
- %lprun:利用逐行分析器运行代码 需要安装line_profiler包
- %memit:测量单个语句的内存使用 需要安装memory_profilter包
- %mprun:通过逐行的内存分析器运行代码 需要安装memory_profilter包