迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 单步执行代码

作者:迹忆客 最近更新:2023/06/29 浏览次数:

本教程将讨论如何使用 Python 调试器单步执行代码。

我们将从头开始解释一个名为 PDB 的命令行工具。 我们还将学习如何在 Python IDLE 的帮助下逐步执行代码。


使用 pdb 模块在 Python 中单步调试代码

与其他编程语言一样,Python 也有一个用于调试 Python 脚本的优秀工具,即 pdb,它代表 Python 调试器。

每当您在操作系统上安装Python时,它就已经安装了,因此您不需要单独安装pdb。 如果您安装了 Python,它将在您的终端上运行。

pdb 模块是一个可以为您节省大量调试时间的工具; 它帮助我们检查正在运行的程序的状态。 我们可以对其进行实验,更改变量的值,使用不同的参数调用函数,运行代码片段等等。

它比通常的打印声明更强大,并且给出了与测试不同的图片。 我们的测试仅表明我们的代码没有按预期工作,而调试使我们能够看到程序执行期间发生的情况。

现在您可能想知道如果我们已经有了 PyCharm IDE 并且可以在 PyCharm IDE 上调试代码,为什么还要使用 pdb。 使用 pdb 的原因是有时在现实生活中,您可能会在某些服务器上运行 Python 脚本。

一般来说,您无法在这些服务器上使用 IDE。 您必须使用终端来调试 Python 脚本; 这就是为什么我们将向您展示如何使用命令行工具 pdb 调试 Python 脚本。

在 pdb 模块中,有一个名为 set_trace() 的断点。 使用此函数,您将有一个断点,您可以在其中检查不同的变量值并执行您想要的任何操作。

我们只需要在程序中插入两行代码,然后我们就可以得到命令行操作,可以做很多不同的事情。 我们很快就会演示这一点。

在进入代码之前,我们将看到一些不同命令行操作的摘要。

操作 说明
n 这将执行下一行代码。
c 此操作将继续执行代码并完成执行。
l 该操作会列出执行所在行的前后3行,这样您就可以看到刚刚执行的三行在哪里以及执行了什么。
s 它会让您单步执行函数调用。 现在,如果您在进入函数时使用 n,它将执行整个函数并在函数调用后继续执行下一行。

s 允许您单步执行函数并逐行运行它。

b 它将允许您设置断点。 您可以通过将 b 命令放入程序中来设置多个断点。
b[int] 我们可以设置 b 后跟一个整数,以在数字的特定行设置断点(例如,b10)。
b[func] b 后跟函数名称,可在不带方括号的函数名称处设置断点。
cl 它将清除所有断点。
cl[int] cl 后跟一个整数将清除特定行号处的断点,空格是可选的。 我们可以输入 cl10 或 cl 10; 这没有任何区别。
p 我们还可以选择打印。 假设我们有一个变量 x; 如果我们在 Python shell 中输入它,它将打印出 x 的值。

我们可以使用带括号的 p 语句。 在括号内,我们只是放置一个变量。

还有更多操作可供选择。

让我们看一个例子,其中我们输入了一个小程序。 它什么也不做; 它只是设置一些变量值、打印语句并执行一些数学函数。

我们可以看到我们导入了 pdb,然后使用 set_trace() 函数设置断点。

import pdb

def transform(x,y):
    x*=2
    y=y**2
    z=x+y
    return z
x=50
y=60
z=5
n=1000

pdb.set_trace()
transform(5,10)
print('z ='+str(z))
n=transform(2,3)
print('n ='+str(n))

我们来看看程序是如何工作的,以及如何使用调试器来分析一些函数。 因此,当我们执行程序时,我们会看到调试器命令提示符中已经输入了Python。

下一行将执行transform()函数,所以我们要做的第一件事就是查看列表l。 它将显示之前执行的三行和接下来要执行的三行,并且它显示我们现在所在的位置,指示使用->。

Python 使用 pdb 逐步执行代码 - 输出 1

现在我们可以选择使用 n 命令来执行下一行,这将执行整个 transform() 函数并跳转到第 15 行。或者,我们可以使用 s 在内部逐行进入 transform() 函数 Transform() 函数并查看其内部发生了什么。

我们将使用 n 来看看那里发生了什么。 使用n,我们执行了 transform() 函数。

如果我们想打印变量值,我们可以输入变量的名称,但我们不能打印出n,因为n将为我们提供下一个执行行。

另一种方法是使用 p() 命令,同时将 n 变量放在括号内以打印其值。

Python 使用 pdb 逐步执行代码 - 输出 2

如果我们想查看我们设置的其他断点,我们也可以使用 b 命令,所以如果我们输入 b,它不会返回任何内容,但我们可以在第 16 行设置另一个断点。现在,如果我们输入 b,它会列出我们的断点。 断点。

cl 将清除所有断点。 假设是,那么我们删除断点。

我们还可以在函数名称处设置断点。 如果这样做,我们将在 transform() 函数的开头设置一个断点,因此每次进入该函数时我们都会单步执行 transform() 函数。

如果我们输入 c,它将继续到下一个断点,如果再次输入 c,则完成我们的代码。

Python 使用 pdb 逐步执行代码 - 输出 3

可以使用 Breakpoint() 函数来调试代码,这是 3.7 版本中引入的新内置函数。

根据Python官方文档,默认情况下,我们基本上在幕后使用 breakpoint() 调用 pdb.set_trace() 。 我们不需要导入pdb并调用 set_trace() ,我们可以使用同样工作的 breakpoint() 来代替使用它。


使用 Python IDLE 在 Python 中单步执行代码

本节将展示如何使用 Python IDLE 调试 Python 程序。 为了进行演示,我们将举一个将两个数字相加的示例。

n1=int(input('Enter a first number :'))
n2=int(input('Enter a second number :'))
Res=n1 + n2
print(n1,'+',n2,Res)

要在Python IDLE中使用调试器,我们首先需要打开调试器以打开Python IDLE。 打开Python IDLE后,我们可以打开位于顶部的调试选项。

点击后,会出现一个调试控制窗口。 在这里我们可以看到调试已打开。

使用 Python IDLE 逐步执行代码 - 示例 1

打开后我们可以看到调试控制窗口。 该控制窗口处于非活动状态,我们无法在任何地方单击它。

我们需要在按 f5 的同时执行 Python 脚本以使其处于活动状态。

调试控制窗口中有多个按钮; 按钮的名称为“go”、“step”、“over”、“out”和“quit”。 如果我们按go,它会要求我们输入输入,输入后给出输出; 否则就会卡住。

使用 out 假设您正在执行一个函数,这样它将完成代码的执行,并且不会向您显示程序的逐步执行。 它只会执行程序并显示输出; 当您想跳过逐步执行时它很有用。

如果你想看看这个程序是如何工作的,执行了哪一行,以及这个程序是如何流动的,那么你可以使用这一步或以上。 步骤选项将为您提供有关该程序的所有信息。

如果我们不想知道程序内部是如何工作的,只想知道哪一行正在执行,那么最好的选择就结束了。 最后一个就退出了; 如果我们使用quit,它将在程序执行过程中退出。

以下是使用 Python IDLE 的调试器的一些工作。

使用 Python IDLE 逐步执行代码 - 示例 2

上一篇:Python 编辑距离

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 编辑距离

发布时间:2023/06/29 浏览次数:67 分类:Python

今天,我们将学习Python中的编辑距离。 我们还将探讨字符串的插入、删除、替换和递归实现。在 Python 中编辑距离 编辑距离是将一个字符串转置为另一个字符串所需的量。

在 Python 中解析 JSON 对象数组

发布时间:2023/06/28 浏览次数:57 分类:Python

由于浏览器可以快速解析 JSON 对象,因此它们有助于在客户端和服务器之间传输数据。 本文将介绍如何使用Python的JSON模块传输和接收JSON数据。

在 Python 中等待 5 秒

发布时间:2023/06/28 浏览次数:152 分类:Python

本篇文章将讨论如何在 Python 中等待 5 秒。在 Python 中使用 time.sleep() 函数等待 5 秒 Python 的 time 模块提供了存储和操作时间的功能和对象。

Python 中的模糊字符串匹配

发布时间:2023/06/28 浏览次数:89 分类:Python

今天,我们将学习如何使用 thefuzz 库,它允许我们在 python 中进行模糊字符串匹配。 此外,我们将学习如何使用 process 模块,该模块允许我们借助模糊字符串逻辑有效地匹配或提取字符串。Py

在 Python 中执行 Shell 命令并获取输出

发布时间:2023/06/28 浏览次数:81 分类:Python

在本文中,我们将学习如何借助 os.system() 从 Python 脚本执行 cmd 命令。 我们还将学习如何借助 Python 中的 subprocess 模块以更简单的方式从脚本执行 cmd 命令。从 Python 脚本执行 CMD 命令并使用 os

Python 中的 Monkey 补丁

发布时间:2023/06/28 浏览次数:186 分类:Python

本文解释了什么是Monkey补丁以及如何在 Python 中实现它。 它有两个部分; 第一个演示了函数中的Monkey修补,第二个演示了如何在文件的单元测试中实现它。

Python 中的 Mock 和 Patch 之间的区别

发布时间:2023/06/28 浏览次数:182 分类:Python

在 Python 中,我们有一个称为单元测试的过程,其中包含模拟和补丁函数。 本文将讨论这两个角色的用途和区别。Python 中 Mock 和 Patch 对象库的用途和区别

在 Python 中使用 SciPy、NumPy 和 Pandas 存储数据

发布时间:2023/06/28 浏览次数:184 分类:Python

我们将了解为什么需要数据分箱以及哪种技术最适合哪种情况。Python 中的分箱 分箱是推断不同变量关系的最强大的分析技术之一。分箱是一种非参数且高度灵活的技术,其中变量被分类为不同

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便