十条让你生产力飙升的Python魔术命令
[浮云]引言 [浮云]
Python不仅是现在最通用的编程语言,在集成新功能方面也是最灵活的。
而魔术命令 (Magic commands) 正是python shell中的重要的功能之一。
那python中的魔术命令 (Magic Command) 到底是什么呢?
图源:Artem Maltsev
魔术命令 (Magic Command) 是常规python代码的增强版,这些命令通常由IPython的内核 (kernel) 提供,以"%"字符为前缀。
简单来说,这些命令是为了解决常见问题而设置的,同时也给代码提供了一些快捷方式。
一共有两种魔术命令 (Magic Command) :%前缀和%%前缀的。
%前缀表示这个命令会在一行代码上运行,而%%前缀表示该命令会在整个单元上运行。
以下是在jupyter Notebook中执行的魔术命令 (Magic Command) 以及它们的执行情况。
[浮云]运行外部文件[浮云]
当我们想要在jupyter notebooks中运行一些代码片段时,我们想运行位于某目录里的外部代码文件。
%run能让你在jupyter notebook中运行任何外部的python文件。
上面的文件myde .py包含了一个输出上述语句的简单脚本。
如果我们指定文件名 (%run命令的路径) ,它就会在此文件中执行。
注意:%运行还能在外部的Jupyter Notebook执行。
[浮云]代码执行时间[浮云]
想知道你运行单元格的准确时间吗?
图源:Luke Chesser
时间魔术命令 (time magic command) 可以跟踪单元的总体执行情况。
由于我们要针对的是整个单元,所以在这里,前缀会用到%%。
上面的单元格包含了一个随机计算的for loop循环语句。
%% time能帮我知道这个for loop循环所需的执行时间。
[浮云]复制内容到一个外部文件[浮云]
很多时候,你需要将内容直接从jupyter notebook中添加到python脚本或文本文件中。
在这里,你无需复制所有内容,也不用创建新的文件,
可以直接通过在代码之前添加writefile命令来导出单元格里的内容。
请注意,命令前的% %表示会导出整个单元格里的内容。
因为我的外部文件已经包含了一些之前的内容,上面我的代码我命名为了" Overwrite myCode.py",
意思是,上图所示的内容会覆盖我的原始内容。
[浮云]显示外部文件内容[浮云]
很多时候,你会想从外部文件复制几行代码到现在的代码中。
你不需要花费很长时间来获取文件或者打开文件复制,只需用%pycat就可以显示任意目录下的任何内容。
它会把外部文件的所有内容显示出来。我们可以把它看成%writefile的相反操作。
图源:Chris Liverani
别分析!下面还有许多令人惊叹的命令有待我们探索。
[浮云]列出所有变量[浮云]
这条魔术命令 (magic command) 能显示整个notebook中使用的所有变量。
下面有3个变量——2个字符串变量和1个整数变量。
如果运行%who,它就会列出我们定义过的3个变量。
上面的代码显示了所有变量,并且与它们的数据类型无关。
如果想要显示特定类型的变量,需要在魔术命令(magic command)之后指明数据的类型。
上面的代码能显示出来所有字符串类型的变量。
[浮云]在notebooks之间共享变量[浮云]
图源:Kelly Sikkema
这条魔术命令 (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
你可以使用"%lsmagic"来找到包含所有魔术命令的列表。
以上就是我讨论的十条魔术命令,希望它们可以帮助你提高工作效率、节省你的时间。
感谢你的阅读!