热爱科技的刘同学

热爱科技的刘同学

【python经验总结】我与bug的那段岁月

📃个人CSDN博客主页:热爱科技的刘同学🌈🌈🌈

我学习编程六年,其中python就得占用我四、五年的时间。在这四五年里,bug这一词光是听,我的耳朵也该起茧子了。虽然bug没有给我带来过什么“灭顶之灾”,但这仍然无法改变我对bug的看法。

对付bug的有效方法不是一味地避其锋芒,而是直面它或是将它扼杀在祸根之中。

【python经验总结】我与bug的那些日子-LMLPHP

举个例子。当我们身后有一堵墙、面前有无尽的黑暗时,我们不会像鸵鸟一样一头扎在墙根,我们会背靠着墙,直面未知与黑暗!

读完以下内容,相信你一定能将bug扼杀在祸根之中!

一、常见类型

(一)粗心导致语法错误

例如:

  1. 漏了末尾冒号;
  2. 缩进错误;
  3. 英文符号错用为中文符号;
  4. 字符串拼接时,把字符串、数字类型拼接到一起;
  5. 没有定义变量;
  6. == 错用成 =。

(二)知识点不熟练

浅浅的举两个例子吧,毕竟python的语法有那么多:

  1. 索引越界;
  2. 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('程序执行完毕!')

二、常见异常类型

三、Traceback模块的使用

对比起前两个程序,使用Traceback模块明显要

import traceback

try:
    print('----------------------------')
    print(10/0)  # 运行后会报错的
except:
    traceback.print_exc()

08-31 16:34