〔浮云〕引言〔浮云〕 Python不仅是现在最通用的编程语言,在集成新功能方面也是最灵活的。 而魔术命令(Magiccommands)正是pythonshell中的重要的功能之一。 那python中的魔术命令(MagicCommand)到底是什么呢? 图源:ArtemMaltsev 魔术命令(MagicCommand)是常规python代码的增强版,这些命令通常由IPython的内核(kernel)提供,以字符为前缀。 简单来说,这些命令是为了解决常见问题而设置的,同时也给代码提供了一些快捷方式。 一共有两种魔术命令(MagicCommand):前缀和前缀的。 前缀表示这个命令会在一行代码上运行,而前缀表示该命令会在整个单元上运行。 以下是在jupyterNotebook中执行的魔术命令(MagicCommand)以及它们的执行情况。 〔浮云〕运行外部文件〔浮云〕 当我们想要在jupyternotebooks中运行一些代码片段时,我们想运行位于某目录里的外部代码文件。 run能让你在jupyternotebook中运行任何外部的python文件。 上面的文件myde。py包含了一个输出上述语句的简单脚本。 如果我们指定文件名(run命令的路径),它就会在此文件中执行。 注意:运行还能在外部的JupyterNotebook执行。 〔浮云〕代码执行时间〔浮云〕 想知道你运行单元格的准确时间吗? 图源:LukeChesser 时间魔术命令(timemagiccommand)可以跟踪单元的总体执行情况。 由于我们要针对的是整个单元,所以在这里,前缀会用到。 上面的单元格包含了一个随机计算的forloop循环语句。 time能帮我知道这个forloop循环所需的执行时间。 〔浮云〕复制内容到一个外部文件〔浮云〕 很多时候,你需要将内容直接从jupyternotebook中添加到python脚本或文本文件中。 在这里,你无需复制所有内容,也不用创建新的文件, 可以直接通过在代码之前添加writefile命令来导出单元格里的内容。 请注意,命令前的表示会导出整个单元格里的内容。 因为我的外部文件已经包含了一些之前的内容,上面我的代码我命名为了OverwritemyCode。py, 意思是,上图所示的内容会覆盖我的原始内容。 〔浮云〕显示外部文件内容〔浮云〕 很多时候,你会想从外部文件复制几行代码到现在的代码中。 你不需要花费很长时间来获取文件或者打开文件复制,只需用pycat就可以显示任意目录下的任何内容。 它会把外部文件的所有内容显示出来。我们可以把它看成writefile的相反操作。 图源:ChrisLiverani 别分析!下面还有许多令人惊叹的命令有待我们探索。 〔浮云〕列出所有变量〔浮云〕 这条魔术命令(magiccommand)能显示整个notebook中使用的所有变量。 下面有3个变量2个字符串变量和1个整数变量。 如果运行who,它就会列出我们定义过的3个变量。 上面的代码显示了所有变量,并且与它们的数据类型无关。 如果想要显示特定类型的变量,需要在魔术命令(magiccommand)之后指明数据的类型。 上面的代码能显示出来所有字符串类型的变量。 〔浮云〕在notebooks之间共享变量〔浮云〕 图源:KellySikkema 这条魔术命令(magiccommand)能让你在不同的JupyterNotebook之间共享变量。 而你只需用到魔术命令(magiccommand)来传递原始变量。 要获取这个变量,还需要你传输带有‘r’参数的相同命令。 这是代码在第一个notebook里的样子: 要获取这些数据的代码就要写在另一个notebook上: 以上应该是不同notebooks之间共享各类数据的最简单的方法了。 〔浮云〕执行HTML脚本〔浮云〕 html能让我们在单元格中编写html代码。 而在执行单元格时,单元将充当一个html编辑器,输出单元的html。 以下代码中包含一个用html创建的简单表格。 你可以看到,html成功显示了我们想要的表。 小技巧:可以使用跟HTML魔术命令类似的的js魔术命令,在单元格中运行Javascript代码。 〔浮云〕显示Matplotlib图〔浮云〕 matplotlib内联魔术命令(inlinemagiccommand)是最常用的命令之一。 这个命令可以在Jupyternotebook中显示matplotlib图。 它还会激活你jupyternotebook中的matplotlib交互式支持。 我们导入了一些需要解释命令功能的library。 现在,我们来创建两个随机列表,来绘制图形。 再接下来,绘制数据的散点图。 可以看出,matplotlib内联魔术命令(inlinemagiccommand)能让你的jupyternotebook图形可视化。 〔浮云〕设置环境变量〔浮云〕 这条魔术命令(magiccommand)能让你列出所有的环境变量,得到特定的环境变量值,并为变量设置一个值。 不带参数的env可以列出所有环境变量。 单个参数的env会返回指定参数的值。 env变量值会显示指定变量中制定的值。 〔浮云〕目标详细信息〔浮云〕 pinfo能传输一个目标的详细信息。 它与object()函数相似。 在下面代码段中,我输入了一个简单的字符串a,然后用pinfo来获取它的详细信息。 从上面的结果中可以看到,pinfo输出了关于这条字符串的所有信息。 图源:AlexGuillaume 你可以使用lsmagic来找到包含所有魔术命令的列表。 以上就是我讨论的十条魔术命令,希望它们可以帮助你提高工作效率、节省你的时间。 感谢你的阅读!