【python经验总结】我与bug的那些日子
【python经验总结】我与bug的那段岁月
💖💖💖💕💕💕欢迎来到本博客💕💕💕💖💖💖
.
🎁支持:如果觉得博主的文章写得还说得过去或者博客对您有帮助的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!🎉🎉Welcome to my blog!🎉🎉
📃个人CSDN博客主页:热爱科技的刘同学🌈🌈🌈
我学习编程六年,其中python就得占用我四、五年的时间。在这四五年里,bug这一词光是听,我的耳朵也该起茧子了。虽然bug没有给我带来过什么“灭顶之灾”,但这仍然无法改变我对bug的看法。
对付bug的有效方法不是一味地避其锋芒,而是直面它或是将它扼杀在祸根之中。
举个例子。当我们身后有一堵墙、面前有无尽的黑暗时,我们不会像鸵鸟一样一头扎在墙根,我们会背靠着墙,直面未知与黑暗!
读完以下内容,相信你一定能将bug扼杀在祸根之中!
文章目录
- 【python经验总结】我与bug的那段岁月
- 一、常见类型
- (一)粗心导致语法错误
- (二)知识点不熟练
- (三)思路不清晰
- (四)被动掉坑
- 1、基础形式
- 2、拓展模式
- try-except-else
- try-except-else-finally
- 二、常见异常类型
- 三、Traceback模块的使用
一、常见类型
(一)粗心导致语法错误
例如:
- 漏了末尾冒号;
- 缩进错误;
- 英文符号错用为中文符号;
- 字符串拼接时,把字符串、数字类型拼接到一起;
- 没有定义变量;
- == 错用成 =。
(二)知识点不熟练
浅浅的举两个例子吧,毕竟python的语法有那么多:
- 索引越界;
- append()不按照规定使用。
(三)思路不清晰
有很多看似很牛逼的项目,只用一个文件,几百行代码就能搞定,堪称高效。但如果你在里面好好的逛了一圈之后就一定会惊呼:“注释都救不了他了!”
(四)被动掉坑
代码逻辑没有错误,只因用户操作不当或意外情况导致程序崩溃。
解决方案:异常处置机制(出现异常及时捕获,内部消化,确保程序运行)
1、基础形式
try:
......
......
...... # 可能出现异常的代码
excpet xxx: # 填入可能会报错问题。若无法预知,可以直接使用 excpet:
......
......
...... # 报错后执行的代码
2、拓展模式
try-except-else
若try块中没有抛出异常,则执行else块;若抛出异常,则执行except。
举个整数相除的例子:
try:
a = int(input('请输入一个整数:'))
b = int(input('请输入一个整数:'))
c = a / b
except BaseException as e:
print('有错误', e)
else:
print(c)
try-except-else-finally
若try块中没有抛出异常,则执行else块;若抛出异常,则执行except;无论是否有异常,finally都会执行。
用finally优化一下刚才的程序:
try:
a = int(input('请输入一个整数:'))
b = int(input('请输入一个整数:'))
c = a / b
except BaseException as m:
print('有错误', m)
else:
print(c)
finally:
print('程序执行完毕!')
二、常见异常类型
序号 | 名称 | 释义 |
---|---|---|
1 | ZeroDivisionError | 除(或取模)零(所有数据类型) |
2 | ImportError | 序列中没有此索引 |
3 | KeyError | 映射中没有这个键 |
4 | NameError | 未声明/初始化变量 |
5 | SyntaxError | 语法错误 |
6 | ValueError | 传入无效参数 |
7 | TypeError | 不同类型连接在一起 |
三、Traceback模块的使用
对比起前两个程序,使用Traceback模块明显要
import traceback
try:
print('----------------------------')
print(10/0) # 运行后会报错的
except:
traceback.print_exc()