公司动态

PyCharm 运行与调试:从入门到实战

📅 2026/8/21 10:26:09
PyCharm 运行与调试:从入门到实战
1. 引言PyCharm 是 JetBrains 出品的 Python 集成开发环境凭借强大的代码补全、智能导航和调试能力成为众多 Python 开发者首选的 IDE。本文围绕 PyCharm 的运行与调试两大核心能力展开通过丰富的代码实例帮助你从基础配置到高级技巧全面掌握 PyCharm 的使用方法。2. 运行配置基础在 PyCharm 中运行一个 Python 脚本最简单的方式是直接点击编辑器右上角的绿色运行按钮。但面对多入口项目、命令行参数、环境变量等复杂场景时就需要借助运行配置Run Configuration来精细控制。下面是一个带命令行参数的示例脚本import sys def main(): # 读取命令行参数 args sys.argv[1:] print(接收到的参数, args) if --name in args: idx args.index(--name) name args[idx 1] print(f你好{name}) else: print(未提供 --name 参数) if name main: main()在 PyCharm 中配置运行参数点击右上角下拉框选择Edit Configurations在Parameters一栏填入--name Alice运行后即可看到输出结果。3. 断点与单步调试调试是定位问题最有效的手段。PyCharm 的调试器支持行断点、条件断点、异常断点等多种形式。下面通过一个计算阶乘的示例演示基本调试流程def factorial(n): if n 0: raise ValueError(n 不能为负数) result 1 for i in range(1, n 1): result * i return result def main(): numbers [5, 6, 7] for num in numbers: print(f{num}! {factorial(num)}) if name main: main()调试步骤在result * i这一行左侧点击设置断点然后点击右上角的调试按钮甲虫图标。程序会在断点处暂停此时可以使用以下调试工具Step OverF8单步执行不进入函数内部。Step IntoF7进入函数内部逐行执行。Step OutShiftF8跳出当前函数。ResumeF9继续执行到下一个断点。4. 条件断点与表达式求值当循环次数很多时逐次单步效率太低。此时可以设置条件断点让程序仅在满足条件时暂停。右键点击断点在弹出的对话框中输入条件表达式def process_items(items): total 0 for idx, item in enumerate(items): # 在这里设置条件断点idx 3 total item print(f处理第 {idx} 项当前累计{total}) return total if name main: data [10, 20, 30, 40, 50] result process_items(data) print(最终结果, result)在total item行设置断点后右键断点选择More在Condition中输入idx 3。这样程序会跳过前三次循环直接停在第四次迭代处。此外调试暂停时可以在Evaluate Expression窗口中输入任意表达式实时求值例如输入total 100查看计算结果无需修改代码。5. 异常断点与日志断点当程序抛出异常但难以定位抛出位置时异常断点非常有用。点击Run菜单选择View Breakpoints在Python Exception Breakpoints中添加ValueError程序抛出该异常时就会自动暂停。下面是一个会触发异常的示例def parse_number(text): try: return int(text) except ValueError as e: print(f解析失败{e}) return None def main(): values [123, abc, 456] for v in values: result parse_number(v) print(f解析 {v} 得到{result}) if name main: main()如果只想记录调试信息而不中断程序可以使用日志断点。右键断点勾选Log message to console输入类似当前值{v}的日志模板程序运行到此处时会在控制台输出日志但不会暂停。6. 多线程调试多线程程序的调试比单线程复杂PyCharm 提供了专门的线程视图。下面是一个多线程示例import threading import time def worker(name, delay): for i in range(3): time.sleep(delay) print(f线程 {name} 执行第 {i 1} 次) def main(): threads [] for idx in range(3): t threading.Thread(targetworker, args(fT{idx}, 0.5)) threads.append(t) t.start() for t in threads: t.join() print(所有线程执行完毕) if name main: main()调试时在print(f线程 {name} 执行第 {i 1} 次)行设置断点启动调试后可以在Frames面板中看到多个线程。点击不同线程可以切换查看各自的调用栈和局部变量从而定位并发问题。7. 远程调试当代码运行在远程服务器或 Docker 容器中时可以使用 PyCharm 的远程调试功能。首先在远程环境中安装调试工具pip install pydevd-pycharm然后在远程代码中插入调试连接代码import pydevd_pycharm # 连接本地 PyCharm 的调试端口 pydevd_pycharm.settrace(localhost, port12345, stdoutToServerTrue, stderrToServerTrue) def remote_task(): data [1, 2, 3, 4, 5] total sum(data) print(f远程计算结果{total}) return total if name main: remote_task()在本地 PyCharm 中点击Run菜单选择Attach to Process配置远程主机和端口后即可像本地调试一样设置断点、查看变量。8. 性能分析与优化PyCharm 内置了Profiler工具可以帮助定位代码中的性能瓶颈。下面是一个需要优化的示例import time def slow_function(): time.sleep(0.1) return sum(range(1000)) def fast_function(): return sum(range(100)) def main(): results [] for _ in range(10): results.append(slow_function()) results.append(fast_function()) print(总结果, sum(results)) if name main: main()点击右上角的Profile按钮运行PyCharm 会生成性能分析报告展示每个函数的调用次数和耗时。通过报告可以直观看到slow_function占用了绝大部分时间从而有针对性地优化。9. 常用快捷键速查熟练掌握快捷键可以大幅提升开发效率以下是 PyCharm 运行与调试相关的常用快捷键功能Windows / LinuxmacOS运行当前脚本Shift F10Control R调试当前脚本Shift F9Control D单步跳过F8F8单步进入F7F7单步跳出Shift F8Shift F8继续执行F9Command Option R切换断点Ctrl F8Command F8查看所有断点Ctrl Shift F8Command Shift F810. 总结本文从运行配置、断点调试、条件断点、异常断点、多线程调试、远程调试到性能分析系统介绍了 PyCharm 运行与调试的核心功能并提供了丰富的代码实例。掌握这些技巧后你可以更高效地定位问题、优化代码把更多精力投入到业务逻辑本身。建议在实际项目中多加练习逐步形成自己的调试习惯。