使用 Spyder#
在本节中,您将了解 Spyder 更高级的功能,并探索大部分窗格。
主窗格之外的功能#
探索如何利用 Spyder 的功能,而不仅仅是四个核心窗格。
使用“绘图”窗格查看、管理和保存图形
在“文件”窗格中浏览、与外部程序交互并打开它们
使用“大纲”窗格在文件内部和文件之间快速导航
使用“查找”窗格在整个项目中搜索文本或正则表达式
在“在线帮助”窗格中发现和探索结构化文档
脚本
大家好!我是 Juanita,我将向大家展示如何使用 Spyder 中除四个主要窗格之外的其余一些可用窗格。
我们从“绘图”窗格开始,它在启动 Spyder 时默认是打开的。要了解它的工作原理,我们打开一个将从 Matplotlib 文档中生成几个绘图的文件。您可以在“绘图”窗格中查看生成的绘图,并使用箭头或简单地单击侧边栏中的绘图来浏览它们。
如果您打开窗格的选项菜单,您会看到“将绘图适配窗口”默认是启用的。禁用它将允许您放大或缩小绘图。您还可以看到“静音内联绘图”已启用,这可以防止相同的图形也出现在 IPython 控制台中。请注意,每次运行代码时,窗格中都会生成新的绘图副本,但您可以使用窗格工具栏中的“X”按钮移除任何您不想保留的绘图。此外,当您在控制台之间切换时,窗格会自动更新以显示每个控制台生成的绘图。
要在其他文档中使用绘图,请单击“复制到剪贴板”按钮,然后将其粘贴到您想要的任何位置,例如文字处理器中。此外,您可以通过单击保存图标将绘图保存为 PNG 格式。
“文件”窗格也默认打开,它允许您浏览计算机上的目录内容,在编辑器中打开它们,并执行各种其他文件操作。您可以在窗格的选项菜单中显示或隐藏文件的大小、类型和日期。当您更改在窗格中查看的顶层文件夹时,主工具栏右上角显示的 Spyder 工作目录将更新,该目录也将与当前活动的控制台同步。双击文本文件将在编辑器中打开它,复制一个或多个文件将允许您将其粘贴为自动格式化的绝对或相对路径。右键单击任何项目将提供一系列额外的交互选项。
您还可以使用系统默认的外部应用程序打开文件,或者在“文件偏好设置”窗格的“文件关联”选项卡中设置自定义文件关联。例如,我们可以添加 .csv
扩展名,并将其与关联应用程序下的 LibreOffice Calc 关联起来。现在,每次您单击具有此扩展名的文件时,它都会使用此程序在外部打开。
现在,我们来看看如何使用“大纲”窗格在文件内部导航。首先,我们必须在“视图”菜单的“窗格”下打开此窗格,因为它默认是不可见的。如您所见,它会显示当前定义的所有类、方法和函数,并允许您只需单击即可在它们之间移动。对于像这样非常大的文件,它可以非常方便地在类之间轻松切换,而不是滚动四千多行代码。您还可以通过使用箭头或“大纲”窗格工具栏中的按钮来展开类以浏览其方法。“大纲”会持续更新,以高亮显示代码中光标位置对应的函数、方法或类,这样您就可以轻松跟踪您正在处理的对象。最后,通过进入窗格选项菜单并激活“显示所有文件”,您可以轻松地在打开的脚本和模块之间切换,这对于导航大型项目尤为重要。
“文件”窗格是另一个对于特别大型项目有用的工具。与“大纲”窗格一样,它可以在“视图”菜单的“窗格”下打开。这允许您查看和导航工作目录、项目或另一个自定义目录中任何文件中文本或正则表达式的所有出现。例如,我们看到在 mainwindow.py
文件中,我们导入了 is_dark_font_color
函数。如果我们要快速找到定义它的文件,我们可以在搜索栏中写入此字符串。通过此搜索,我们从 3 个不同的文件中得到了 7 个匹配项。当我们点击任何一个匹配项时,文件会在编辑器中自动打开,就在此字符串出现的位置。
最后,我们将学习如何使用“在线帮助”窗格浏览文档。一旦您打开它(同样在“视图”菜单的“窗格”下),您将看到一个可用文档模块的索引,包括 Python 标准库中的模块和 Spyder 环境中可能安装的任何第三方软件包。例如,我们可以找到 Numpy、Pandas 和 Matplotlib 的帮助,如果您使用 Anaconda 下载了 Spyder,它们都已安装。您可以在窗格提供的内置网络浏览器中浏览内容,并单击其中的超链接以导航到不同的页面。您还可以将需要文档的项目名称输入到“获取”字段或窗格工具栏上方的空间中,以直接加载其信息。如果您不确定对象的名称,请使用“搜索”字段查看适用于任何关键字的结果列表。
现在您已经熟悉了 Spyder 更广泛的窗格和功能,您可以轻松完成各种常见的编程任务。请继续关注我们的后续视频,以进一步扩充您的科学工具箱,一如既往,快乐地使用 Spyder 吧!
提高代码质量#
学习如何使用代码分析来提高程序的质量。
打开并使用代码分析来评估 Python 文件的质量和风格
在编辑器中或计算机上的任何位置对文件运行分析
确定错误、警告或消息的含义以及如何修复它们
关闭某一行、某个文件或全局范围内的消息
脚本
大家好!我是 Juanita,在这个视频中,我们将学习如何使用“代码分析”窗格来提高代码质量。要显示它,我们可以在“视图”菜单的“窗格”下单击它的名称。
此窗格检测代码中的样式问题、不良实践、潜在错误和其他质量问题,而无需执行代码。运行代码分析有三种方式
要分析在编辑器中打开的文件,我们可以按下可配置的快捷键(默认为 F8),或者从菜单栏中选择“源”——>“运行代码分析”。
我们还可以通过路径框旁边的文件按钮浏览文件来选择要分析的文件。这将自动开始分析。
第三种方法是手动在窗格工具栏的路径输入框中输入要检查的文件路径,然后单击窗格中的“分析”按钮。
根据这些结果,代码分析显示总得分为 4.34/10,这使我们能够跟踪代码质量的改进。我们还可以展开或折叠窗格中的一个或所有部分,以便查看识别代码问题的 Pylint 错误、警告和消息。
例如,结果告诉我们第 20 行有一个警告。要直接跳转到编辑器中的这一行,只需单击该消息。在这里,代码分析显示存在 bad-whitespace
问题。要理解这意味着什么,请打开 Pylint 文档。在 Pylint 文档页面上,点击 Pylint 功能并搜索消息代码。
我们可以看到文档说我们在运算符周围使用了错误的空格数量。
bad-whitespace [C0326]:
%s space %s %s %s Used when a wrong number of spaces is used around an operator, bracket or block opener.
我们可以通过在此变量赋值的运算符前后添加一个空格来修复此错误。如果我们再次运行分析,我们会看到此行不再显示该错误。
我们可以点击文件名字段中的下拉箭头来查看以前的分析列表。点击其中一个将显示结果。
有时,关闭某些消息会很有用。我们可以通过三种不同的方式来做到这一点。
我们可能只想消除一行上的警告;例如,这个“未使用”的导入对于代码执行仍然是必需的。为此,请在行末输入 # pylint: disable=unused-import
作为注释。再次运行分析将显示该错误不再可见。
如果我们要在一个文件中禁止一条消息,可以通过在文件开头写入禁用命令来完成。例如,我们可以禁用在此文件中多次出现的 invalid-name
警告。如果我们再次运行分析,所有这些警告都消失了。
最后,我们可以通过编辑用户文件夹中的 .pylintrc
配置文件来针对所有文件抑制特定消息。如果它不存在,我们可以通过打开终端(如果您使用 Windows,则打开 Anaconda Prompt),并在用户目录中运行 pylint --generate-rc > .pylintrc
来生成它。
现在,我们可以进入此文件中的 MESSAGE CONTROL
部分,并添加相应的 Pylint 消息名称,例如 no-name-in-module
。如果再运行一次分析,我们就会看到 no-name-in-module
警告不再出现。
我们可以看到我们文件的得分提高到了 7.63/10,比之前的 4.34 有了很大的改进。
现在我们已经学会了如何提高代码质量,您已经准备好使用 Spyder 编写更清晰、更正确的程序了。请继续关注我们的下一个视频,一如既往,快乐地使用 Spyder 吧!
优化代码#
学习如何使用性能分析器优化代码。
使用性能分析器查找程序中的瓶颈
在编辑器中或计算机上的其他位置对文件运行性能分析
解释结果以评估函数和方法的性能
利用这些信息来加快代码的运行时间
脚本
大家好!我是 Juanita,在这个视频中,我们将学习如何使用性能分析器优化代码。要显示它,请在“视图”菜单的“窗格”下单击它的名称。
性能分析器将确定文件中使用的每个函数和方法的运行时间及调用次数。分析文件有三种方式
我们可以使用性能分析器路径框右侧的打开按钮浏览文件,它将自动对文件运行性能分析。
我们也可以手动在窗格的路径框中输入路径,然后通过按下“分析”按钮对文件运行分析。
如果我们要对当前在编辑器中打开的文件运行性能分析器,可以点击菜单栏中的“运行”——>“性能分析…”,或者使用可配置的快捷键 F10。
我们看到窗格中的结果显示了文件中的不同函数和方法,每个子函数都按层次结构列在其调用项之下。列中显示了每个函数及其调用的所有内容所花费的总时间,而本地时间仅包括在该特定函数中花费的时间。
例如,此文件中的 values
函数调用了一个 internal_values
函数,values
总共运行了 482 微秒,其中 338 微秒用于执行内部的 internal_values
。因此,values
的总时间为 482 微秒,但其本地时间仅为 144 微秒,因为其余时间都花费在 internal_values
内部。
“调用”列显示了在该级别函数被调用的总次数。最后,如果加载了比较结果,三个列的“差异”列中会显示数字,表示两次测量之间运行时间的改变。
通过双击性能分析器中的项目,我们将被带到编辑器中调用它的文件和行。如果此函数未在您打开的脚本中被调用,单击它将打开包含它的文件。我们可以单击文件名字段中的向下箭头按钮,以回忆之前分析过的文件的路径。
现在我们知道了如何解释性能分析的结果,让我们通过找到耗时最长的函数并使其更快来优化代码。在这种情况下,to_datetime
需要 39 秒才能运行。原因是 Pandas 必须解析非标准时间戳格式,并且没有被告知尝试使用比默认更快的解析器。
我们可以缩短此函数所需的时间,并将其与之前的时间进行比较。为此,首先我们必须使用窗格中的保存按钮将数据保存为 .Result
文件。现在我们必须弄清楚如何优化该函数,所以让我们搜索它。我们看到可以通过手动指定日期时间格式来加速此函数。因此,我们将适当的参数 format="%Y-%m-%d %H:%M:%S.%f %z"
添加到我们的函数调用中。
现在,我们再次运行性能分析,看看我们的脚本性能有了哪些改进。如果我们要查看时间缩短了多少,可以加载之前的结果并查看差异列。请注意,差异是绿色的,因为时间减少了三倍,只用了 13 秒而不是 39 秒。我们的代码现在快了 26 秒!
现在您已经学会了如何分析代码的执行时间,您可以借助 Spyder 编写更高效的程序了。请继续关注我们的下一个视频,一如既往,快乐地使用 Spyder 吧!