您的位置:

使用Pycharm进行Python调试

1. 介绍

随着Python语言的不断发展,很多开发者已经开始使用Pycharm进行集成开发环境的构建。Pycharm具有许多有用的功能,其中最有用的就是Python调试器。

如果你对Python编程感兴趣,那么使用Pycharm的Python调试器将对你的编程技能提升非常有帮助。在这篇文章中,我们将学习使用Pycharm进行Python调试的技巧和知识。

2. 正文

2.1 Pycharm Python调试器的基础知识

Pycharm的Python调试器允许你检测代码的错误和缺陷,以帮助你解决各种问题。Python调试器为开发者提供了非常强大的工具,包括运行代码的过程中停止代码,查看代码的运行状态和变量值,查看函数调用栈,以及调试复杂的运算表达式等。

def fibonacci(n):
    if n<=1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)
    
print(fibonacci(10))
print(fibonacci(15))
print(fibonacci(20))

当你在运行上面的代码时,你可能会询问,函数`fibonacci()`在计算什么?每一次调用递归,它都在计算什么?可以使用Pycharm的Python调试器来检测它。

2.2 在Pycharm中设置断点

要开始使用Pycharm调试器,你需要设置一个断点。你可以把断点设置在你想要的任何地方,例如,在想要检查的代码行上面。

对于上面的代码`fibonacci()`,你可以设置一个断点,例如设置在第4行:

def fibonacci(n):
    if n<=1:
        return n   # 第4行:设置断点
    else:
        return fibonacci(n-1) + fibonacci(n-2)
    
print(fibonacci(10))
print(fibonacci(15))
print(fibonacci(20))

2.3 在Pycharm中启动调试

设置好断点后,可以使用调试模式下开始执行Python程序。在Pycharm的菜单栏中,选择【Run】->【Debug】来启动调试。

在这里,你可以看到程序在`fibonacci()`函数的第4行已经停止了。Pycharm提供了许多调试工具,比如打开【Variables】窗口,可以看到程序运行过程中变量的值,以及函数调用栈等信息。

2.4 调试复杂的算法

对于复杂的算法,例如查找素数的算法,你可以使用Pycharm调试工具来检查代码运行的过程,以及代码中间值的结果。

def is_prime(n):
    if n == 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

max = 100
for n in range(2, max):
    if is_prime(n):
        print(n)

在这里,你可以检查每一个变量在函数运行过程中的值,以及找出代码中隐藏的错误。

2.5 在Pycharm中设置单元测试

除了使用调试器来调试你的Python代码,你还可以使用单元测试来检测代码错误和缺陷。Pycharm支持多种编写单元测试的方式,例如在命令行就能编写的unittest框架、Pytest和Nosetest等。

要开始编写单元测试,首先,你需要创建一个Pycharm测试文件夹。可以通过在项目文件夹调用右键菜单,创建一个Python包来生成测试文件。

在这里,你可以编写并执行各种测试,以确保你的代码质量和逻辑性。在进行单元测试时,可以使用Pycharm中的自动化测试工具,以方便之后的可重复测试。

2.6 Pycharm调试技巧

Pycharm的调试器不仅提供了强大的调试工具,还有许多调试技巧。

  • 在【View】->【Tool Windows】 ->【Debug】中开启Debug窗口。Debug窗口是Pycharm的调试器特有的工具,可以使你更细致地查看代码的运行。可以调用变量、打印调用栈以及设置断点。
  • 在代码中点击左侧的圆点可以为该行设置断点。
  • 在调试过程中时,可以使用以下快捷键:
    • F8:单步执行
    • F7:一步步进入函数
    • Shift+F7:强制“步入”当前代码行。
    • Shift+F8:不进入当前函数体内,直接进入当前函数的下一行
    • Alt+Shift+F8:计算选择表达式
  • 调试过程中,可以使用Pycharm工具栏中的工具来查看变量的值和内存使用情况等。

3. 小标题

3.1 设置断点

设置断点是调试的第一步。可以打开调试控制台,在行号位置点击,设置断点。也可以使用鼠标选中需要断点的行,按下快捷键 Ctrl+F8 实现快捷断点。

3.2 监视变量

监视变量帮助我们在程序运行时查看变量的值。可以单击要检查的变量行,右击菜单选择“Add to Watches”把变量加入监视,在可添加一个表达式变量。

3.3 断点控制操作

使用快捷键可以对断点进行控制:

  • F8 跳过断点;
  • F7 进入函数;
  • Shift+F7:智能步入;
  • Shift+F8:跳出方法;

4. 代码示例

下面是一个Pycharm实现二元组计数的示例:

from collections import defaultdict

def snow_array(arr: list, K: int) -> int:
    cnt = defaultdict(int)
    ans = 0
    presum = 0

    for num in arr:
        presum += num
        mod = presum % K
        ans += cnt[mod]
        if mod == 0:
            ans += 1
        cnt[mod] += 1

    return ans

if __name__ == '__main__':
    arr = [1, 2, 3, 4, 1, 6]
    k = 100
    print(snow_array(arr, k))

5. 结论

在本文中,我们学习了使用Pycharm进行Python调试的基础知识和高级技巧。Python调试器为开发人员提供了一个强大的工具,可以检测代码中的错误和缺陷,并找出隐藏的缺陷。此外,我们还介绍了单元测试的概念和如何使用它来测试Python代码。

在日常的开发过程中,熟练掌握Pycharm的Python调试器能够大大提高调试程序的效率和准确性,使你的程序在Python编程领域中脱颖而出。