Python自动化全网最实用的Debug 调试技巧汇总大佬偷偷使用的神技
一、思考❓❔
1.什么是debug?
- 找茬找软件的茬
- 发现程序的缺陷
2.为什么需要debug?
- 谁都不敢保证,写的代码没有任何问题
- 高效查找软件异常
- 一位优秀的开发工程师20%的时间写代码80%的时间用来排错
- “不会debug” == “不会代码” == “低工资”
3.debug工具需要具备哪些功能?
- 控制程序的执行想停则停,想执行则执行随心所欲
- 设置断点在指定位置停止
- 查看当前命名空间(程序栈)中变量
二、Python中的Debug大法????
案例代码如下所示:
创建deubg_skills_demo.py文件
import time from DebugSkills.gifts import send_gift def say_love(name, talk): print(f"{name}: {talk}!") print(show(3)) print(f"{send_gift()}, 能代表我的心!") def show(num): print(f"{'轰隆' * num}!") print(f"{'⚡' * num}") return "还敢再发誓吗?" def long_long_ago(name, talk): # breakpoint() print("\nlong long ago...") print("当初没被雷劈死的原因既然是爱错了那个她/他") print(f"{name}: {talk}!") print(show(4)) print(f"{send_gift()}, 能代表我的心!") if __name__ == '__main__': lover = input("请输入你爱的人: ") love_talk = input("请输入爱的箴言: ") # 方法一: # import pdb # pdb.set_trace() # 方法二: # breakpoint() breakpoint() say_love(lover, love_talk) time.sleep(5) lover = input("\n请输入你爱的人: ") love_talk = input("请输入爱的箴言: ") long_long_ago(lover, love_talk)
创建gifts.py文件
import random gifts = ["99朵玫瑰", "钻戒", "马尔代夫三十日游", "北京二环内的一套厕所", "玛莎拉蒂车钥匙", "免费自行车司机"] def send_gift(): """ 送礼物 :return: """ one_gift = random.choice(gifts) return one_gift
1.pdb操作 (^_-)-☆
- 系统自带的debug工具(无需安装)
- 将以下代码放在需要调试的地方(类似于设置断点)
# 通用方法 import pdb; pdb.set_trace() # Python3.6以上版本 breakpoint()
- 当程序执行到上述代码所在位置时,会自动开启一个console终端"->"是接下来要执行的代码(当前还未执行)
- 可以在终端运行的命令list或者l显示当前运行的代码默认列出11行代码
- p 变量名 或者 p 需要运行的表达式打印变量的值
- step或者s如果在函数调用处执行,则会进入函数体内部
- next或者n如果在函数调用处执行,则不会进入函数体内部
- enter重复执行上一次的命令
- b(reak) [ ([filename:]lineno | function) [, condition] ]设置断点filename可选,如果不传,默认在当前文件设置断点
- c或者continue继续往下运行,在下一个断点处停下来
- disable 断点编号禁用断点
- enable 断点编号启用断点
- cl或者clear 断点编号清除断点
- display或者undisplay 变量监听或者不监听某个变量如果变量值改变,会自动显示
- h或者help帮助信息
- h 具体命令具体命令的帮助文档
- h pdbpdb的完整文档
三、Pycharm debug操作????????
1.打开Python Prompt
会出现一个ipython的控制台
- 可在控制台查看当前命名空间中的变量
- 也可执行Python表达式
2.Step Over / F8
- 按调试工具栏中的
- 类似于pdb中的next
- 程序不会进入到函数体内部
3.Step Into / F7
- 按调试工具栏中的
- 类似于pdb中的step
- 程序会进入到函数(方法)体内部、系统源码、第三方模块源码中
4.Step Out / Shift+F8
- 从函数体内部跳出
5.Step Into My Code / ALT+Shift+F7
- 按调试工具栏中的
- 主要关注自己写的代码
- 从系统源码、第三方模块源码中跳到自己写的代码中
6.Evaluate Expression
- 在当前命名空间内计算表达式的值
7.Quick Evaluate Expression
- 快速计算表达式的值
8.Watching
- 类似于pdb中的display
- 可以监听某个变量或者表达式的值
四、总结????????
- 作为代码编写者,掌握代码的调试技巧是必备的
- 能提升工作效率,提高代码质量
- Python中Debug调试工具和技巧非常多
- 最常用、最实用的知识点,本文均有覆盖