十条让你生产力飙升的Python魔术命令

十条让你生产力飙升的Python魔术命令

Python不仅是现在最通用的编程语言,在集成新功能方面也是最灵活的。而魔术命令(Magic commands)正是python shell中的重要的功能之一。

那python中的魔术命令(Magic Command)到底是什么呢?

图片由 Artem Maltsev拍摄,摘自Unsplash

魔术命令(Magic Command)是常规python代码的增强版,这些命令通常由IPython的内核(kernel)提供,以“%”字符为前缀。简单来说,这些命令是为了解决常见问题设置的,同时也给代码提供了一些快捷方式。如果你想了解更多数据分析相关内容,可以阅读以下这些文章:
Python数据处理:关于Pandas你需要知道的都在这里
PolYamoR的简介:Python和R之间的双向翻译器
数据分析领域里,R和Python到底哪个市场需求大?

一共有两种魔术命令(Magic Command):%前缀和%%前缀的。%前缀表示这个命令会在一行代码上运行,而%%前缀表示该命令会在整个单元上运行。

以下是在jupyter Notebook中执行的魔术命令(Magic Command)以及它们的执行情况。

运行外部文件

当我们想要在jupyter notebooks中运行一些代码片段时,我们想运行位于某目录里的外部代码文件。%run能让你在jupyter notebook中运行任何外部的python文件。

上面的文件myde .py包含了一个输出上述语句的简单脚本。

如果我们指定文件名(%run命令的路径),它就会在此文件中执行。

注意:%运行还能在外部的Jupyter Notebook执行。

代码执行时间

想知道你运行单元格的准确时间吗?

图片由Luke Chesser拍摄,摘自Unsplash

时间魔术命令(time magic command)可以跟踪单元的总体执行情况。

由于我们要针对的是整个单元,所以在这里,前缀会用到%%。

上面的单元格包含了一个随机计算的for loop循环语句。%% time能帮我知道这个for loop循环所需的执行时间。

复制内容到一个外部文件

很多时候,你需要将内容直接从jupyter notebook中添加到python脚本或文本文件中。在这里,你无需复制所有内容,也不用创建新的文件,可以直接通过在代码之前添加writefile命令来导出单元格里的内容。

请注意,命令前的% %表示会导出整个单元格里的内容。

因为我的外部文件已经包含了一些之前的内容,上面我的代码我命名为了“ Overwrite myCode.py”,意思是,上图所示的内容会覆盖我的原始内容。

显示外部文件内容

很多时候,你会想从外部文件复制几行代码到现在的代码中。你不需要花费很长时间来获取文件或者打开文件复制,只需用%pycat就可以显示任意目录下的任何内容。

它会把外部文件的所有内容显示出来。我们可以把它看成%writefile的相反操作。

图片由Chris Liverani拍摄,摘自Unsplash

别分析!下面还有许多令人惊叹的命令有待我们探索。

列出所有变量

这条魔术命令(magic command)能显示整个notebook中使用的所有变量。

下面有3个变量——2个字符串变量和1个整数变量。如果运行%who,它就会列出我们定义过的3个变量。

上面的代码显示了所有变量,并且与它们的数据类型无关。

如果想要显示特定类型的变量,需要在魔术命令(magic command)之后指明数据的类型。上面的代码能显示出来所有字符串类型的变量。

在notebooks之间共享变量

图片由Kelly Sikkema拍摄,摘自Unsplash

这条魔术命令(magic command)能让你在不同的Jupyter Notebook之间共享变量。而你只需用到魔术命令(magic command)来传递原始变量。要获取这个变量,还需要你传输带有‘-r’参数的相同命令。这是代码在第一个notebook里的样子:

要获取这些数据的代码就要写在另一个notebook上:

以上应该是不同notebooks之间共享各类数据的最简单的方法了。

执行HTML脚本

%% html能让我们在单元格中编写html代码。而在执行单元格时,单元将充当一个html编辑器,输出单元的html。

以下代码中包含一个用html创建的简单表格。你可以看到,html成功显示了我们想要的表。

小技巧:可以使用跟HTML 魔术命令类似的的%%js 魔术命令,在单元格中运行Javascript代码。

显示Matplotlib图

%matplotlib内联魔术命令(inline magic command)是最常用的命令之一。这个命令可以在Jupyter notebook中显示matplotlib图。它还会激活你jupyter notebook中的matplotlib交互式支持。

我们导入了一些需要解释命令功能的library。现在,我们来创建两个随机列表,来绘制图形。

再接下来,绘制数据的散点图。

可以看出,%matplotlib内联魔术命令(inline magic command)能让你的jupyter notebook图形可视化。

设置环境变量

这条魔术命令(magic command)能让你列出所有的环境变量,得到特定的环境变量值,并为变量设置一个值。

不带参数的%env可以列出所有环境变量。

单个参数的%env会返回指定参数的值。“%env 变量 值”会显示指定变量中制定的值。

目标详细信息

%pinfo能传输一个目标的详细信息。它与object()函数相似。

在下面代码段中,我输入了一个简单的字符串“ a”,然后用%pinfo来获取它的详细信息。

从上面的结果中可以看到,%pinfo输出了关于这条字符串的所有信息。

图片由Alex Guillaume拍摄,摘自Unsplash

你可以使用“%lsmagic”来找到包含所有魔术命令的列表。

以上就是我讨论的十条魔术命令,希望它们可以帮助你提高工作效率、节省你的时间。

以上就是我讨论的十条魔术命令,希望它们可以帮助你提高工作效率、节省你的时间。

感谢你的阅读!你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Siddhesh Jadhav
翻译作者:Lea
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/top-10-magic-commands-in-python-to-boost-your-productivity-1acac061c7a9