开发你自己的科学 Python 代码
在许多情况下,科学研究会将您带入全新的知识领域,这是前人从未探索过的。这意味着您需要做的计算工作也可能是全新的。虽然通常此类代码开发仍然发生在 C 或 FORTRAN 中,但 Python 的普及程度正在增长。在物理学中尤其如此。
如果您只是处理小型代码库,基本的文本编辑器就足够了;但是,一旦您的项目达到一定规模,使用合适的 IDE 将会是一个巨大的优势。幸运的是,一个开源项目正致力于填补这一确切的空白:Spyder。Spyder 适用于 Windows、Mac OS X 和 Linux。您应该能够找到适合您发行版的软件包,但如果没有,您始终可以在主要的 Spyder 网站上获取二进制文件或源代码。
Spyder 实际上是用 Python 编写的,并且它被设计为插件架构。这意味着您可以通过安装插件来添加额外的功能。如果您找不到满足您需求的插件,您可以随时编写自己的插件。
当您启动 Spyder 时,会打开多个窗格,并显示一个临时的 Python 脚本,您可以使用它开始编辑。主窗格是编辑器,临时脚本已加载并在其中准备好供您开始工作。窗口的右侧分为两个窗格。底部窗格是运行 Python 解释器的控制台。在这里您可以看到 Spyder 在启动时自动加载了 NumPy、SciPy 和 matplotlib,因此您已经拥有了您可能需要的大部分工具。

图 1. 当您启动 Spyder 时,会出现多个信息窗格以及主编辑器窗格。
您可以像使用任何其他 Python 解释器一样使用此控制台。顶部窗格有多个选项卡。启动时打开的第一个选项卡是对象检查器。此选项卡使您可以查看代码中使用的任何对象的详细信息。其他可用的选项卡是变量检查器和文件浏览器。

图 2. 对象检查器使您可以查看您可能想要使用的任何对象的详细信息。
让我们首先看一下主编辑器窗格。像任何其他编程编辑器一样,Spyder 提供 Python 语法的全彩色突出显示。Rope 用于为编辑器提供代码内省功能。如果您开始键入函数调用,Spyder 会提供代码完成建议。
Pyflakes 提供即时代码分析。代码中的任何错误都会立即在边距中用三角形符号突出显示。当您将鼠标悬停在其上时,错误的详细信息将显示在弹出窗口中。您还可以在编辑器中设置断点,这些断点由 Python 调试器使用。这样,当您在 pdb 调试器下运行代码时,您可以稍微控制代码的运行方式。

图 3. 您可以在首选项部分中设置编辑器窗口的所有选项。
控制台窗格提供了一整套工具来控制多个解释器。当您从编辑器运行脚本时,您可以选择启动一个新的解释器来运行它。或者,您可以在现有的解释器中运行它。您可以在 Spyder 的首选项中设置此行为。您也可以直接从控制台窗格创建一个新的解释器。

图 4. 控制台部分的偏好设置控制诸如是否对其进行监视等事项。
同样有趣的是,您可以在控制台中创建 IPython 解释器。然后,您可以使用 IPython 提供的所有额外功能。这些高级功能之一是能够并行使用多个 IPython 引擎。从 Spyder 的控制台中,您可以创建这些 IPython 引擎,它们将在后台运行,随时可用于您可能想到的任何并行处理。因此,您不仅可以将新的科学代码开发为并行程序,还可以直接从 Spyder 中并行地使用它。所有这些额外的解释器和引擎都作为单独的进程运行,这意味着如果其中一个 Python 解释器中发生不好的事情,它们不会影响 Spyder 本身或导致其挂起。
右上角窗格中的一个额外选项卡调出变量浏览器。此窗格为您提供 Spyder 内存空间中当前处于活动状态的所有变量的列表。它显示全局命名空间中可访问的每个变量的名称、类型、大小和值。这适用于内部 Python 解释器和任何外部解释器。变量浏览器可以处理所有标准数据类型,如字符串、整数和浮点数。它还包括一个数组编辑器,可用于编辑列表和元组。数组编辑器为编辑复杂数据类型提供了良好的环境。

图 5. 变量浏览器为您提供全局命名空间中所有内容的列表。
Spyder 提供了更多的工具。通过右键单击列表或元组,您可以进行一些基本的数据分析。Spyder 允许您绘制数据对象中的值,以查看其外观。或者,如果统计分析更有意义,您可以查看值的直方图。

图 6. Spyder 允许您绘制列表或元组中的数据。
所有这些工具都很方便,但如果正在开发大型代码库,仅靠它们是不够的。在这种情况下,您将需要某种项目级组织。Spyder 也可以在这种情况下提供帮助。您可以创建一个项目,以便将一组文件封装为一个单元。创建新项目会创建一个新文件夹来存储所有关联的文件。打开这个新项目会创建一个新窗格,您可以在其中处理项目文件。通过右键单击项目,您可以创建新的文件、文件夹、模块或包。当您创建一个新文件时,Spyder 会在编辑器中打开它,以便您可以开始处理它。

图 7. 如果您正在处理较大的代码库,项目浏览器将非常有用。
您应该注意的最后一个工具是性能分析器。程序开发的第一步是编写可以工作的代码。之后,您的工作是编写尽可能高效的代码。经验法则是最后优化,并且只优化需要优化的部分。但是,程序的哪一部分是需要优化的呢?如果没有可靠的测量,您将不知道需要优化什么。在 Spyder 中,您可以单击菜单项“运行”→“性能分析”或按 F10。这会在 Python 性能分析器下运行您的代码,从而让您了解所有时间都花在了哪里。一旦您掌握了这些信息,您就可以将精力集中在最有效的地方。

图 8. 性能分析器在窗口底部打开一个新窗格,显示每个函数的调用次数和时间。
希望您可以在开发自己的科学 Python 代码时使用 Spyder 并顺利进行。尽管存在许多用于开发代码的 IDE,但没有很多专门用于开发科学代码的设置。借助 Spyder,您应该在开发新的突破性代码方面取得领先,从而解决可能为您赢得下一个诺贝尔奖的问题。