jupyter和ipython_《利用Python进行数据分析》学习笔记3 - IPython Notebook (Jupyter)

[第三章 Part3]

安装并使用IPython Notebook

IPython Notebook现在叫Jupyter Notebook。2011年,由Brain Granger领导的IPython团队开始开发一种基于Web技术的交互式计算文档格式,即IPython Notebook.

它有这一种基于JSON的文档格式.ipynb,可以轻松分享代码、输出结果及图片等内容。

现在已经不能通过ipython notebook --pylab=inline命令来访问。而是需要使用jupyter notebook。

可以通过pip install jupyter notebook来安装。

命令行运行jupyter notebook即可运行。

重新加载模块依赖项

如果使用%run执行某段脚本,之后又对脚本进行了修改,则脚本中的import some_lib需要重新加载。因为Python是“一次加载”模块系统。(这里不同于matlab等,会自动应用代码修改)。解决这个问题有两个办法:使用Python内置的reload函数,如:

import some_lib

reload(some_lib)

2. 使用IPython停的特殊dreload函数,来解决模块的“深度”(递归)重加载。如:

import some_lib

dreload(some_lib)

若仍不行,则需重启IPython即可.

注意:由于一个模块或包可能会在一个程序中的不同位置多次引入,所以Python会在第一次引入这些模块时对其进行缓存,而不是每次都执行模块中的代码。否则,应用程序的模块化和良好的代码组织等手段就达不到高效的目的了。

扁平结构要比嵌套结构好

“扁平结构要比嵌套结构好”的思想来自“Zen of Python”(这是Tim Peters 2004年写的一首诗,执行“import this”可得),它对交互式的代码开发模块同样有效。编写函数和类时应尽量注意低耦合和模块化,这样可以使它们更易于测试、调试和交互式使用。

无惧大文件

如果曾经学过Java等,可能会有人告诉你“尽量保持文件的小型化”。然而咋IPython中开发代码时,处理10个小文件(但互相关联的)可能会更让人头疼。更少的文件意味着重新加载的模块更少,编辑时需要在各个文件中间的跳转次数更少。作者发现维护更大的(具有高内聚度的)模块会更实用也更具有Python特点。在解决完问题之后,有时将大文件拆分成小文件会更好。

对于大型代码库而言,找到一种合乎逻辑的模块、包架构需要花点功夫,对团队工作更重要。每个模块都应该具有足够高的内聚度,而且能够更直观的找到对应各种功能的函数和类。

高级IPython功能

让你的类对IPython更加友好

对于许多对象(如字典、列表、元组等),内置的pprint模块就能给出漂亮的格式,但是对于自定义的类,必须自己生产所需的字符串输出。如下简单的类:

class Message:

def __init__(self,msg):

self.msg = msg

运行则输出:

由于IPython会获取__repr__方法返回的字符串,并显示在控制台上,因此需要增加一个__repr__方法,代码修改为如下:

class Message:

def __init__(self,msg):

self.msg = msg

def __repr__(self):

return 'Message: %s' %self.msg

然后运行输出:

个性化和配置

IPython shell在外观(如颜色、提示符、行间距等)和行为方面的大部分内容都可以进行配置。如:修改颜色方案。

修改输入输出提示符。

去掉Out提示符跟下一个In提示符之间的空行。

执行任意Python语句。(可以引用所有常用的东西,或者希望每次启动IPython都发生的事情)。

启用IPython扩展,如line_profiler中的魔术命令%lprun。

定义自己的魔术命令或系统别名。

这些配置选项都在ipython_config.py的文件中。这个文件中的注释很详细可以参考。假如你想专门为某个应用程序或项目量身定做一套IPython配置,输入下面的命令即可新建一个个性化设置:

ipython profile create secret_project

然后编辑这个profile_secret_project目录中的配置文件,在用如下方式启动IPython。

ipython --profile=secret_project

******

IPython profile: secret_project

关于个性化和配置方面的详细信息,可参考IPython的在线文档。

[第三章 完]

[第四章 Numpy基础] 待续......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值