zoukankan      html  css  js  c++  java
  • 分享一个python调试程序BUG的技巧,有谁又会不出BUG呢

    在写程序的过程中,经常会遇到各种bug,而python的报错功能其实非常有限,我们仅仅依靠看报错提示,很难找到哪里出了错误!
    今天就分享一个调试python程序的小技巧:

    用input中断程序

    用print输出可疑的变量

    一:什么情况下可疑调试

    学过Matlab的同学应该很容易理解我的意思,Matlab中有一个功能是专门用来调试程序的,可以让程序在特定的位置中断。但是python没有这个功能(特殊的编辑器除外)。不过我们可以用input中断程序。然后在input中断前print出可疑的变量我们举一个简单的例子。

    a=3
    b=9
    c=a+b
    print('a+b等于',c)
    b='l'
    d=a-b
    print('a-b等于',d)
    

      

    这是一个计算加减法的程序,首先计算a+b,然后打印出a+b。

    随后,我们还有计算出a-b,并打印出来。

    这个代码运行后出现了错误。

    当然,这个简单的错误大家很容易看出来。错误在于第一个print之后,变量b变成了str型。而str型无法和int型的a做加减法运算。导致错误的产生。

    由于这个程序代码很少,所以大家很容易就看出来了。

    但是如果是几百行的代码,就很不容易找到错误的源头,这就需要用input中断程序,然后打印出可疑变量。

    二:在哪里中断程序

    调试程序需要结合报错提示,从报错提示中,我们可以看到是哪一行程序出了错误,然后在这一行的前面那一行中断。

    之后,还要找出这个出错的一行代码,里面用到了哪些变量,用到的这些变量就是可以变量。

    从上面的图我们可以看出,报错的代码是:d=a-b。也就是我用黑色的线画出来的那个。这个代码用到了两个变量进行计算,分别是a和b,报错的意思就是这两个代码的数据类型不合适,不能放在一起计算。

    三:print出可以变量

    找到出错的代码后,我们还要将里面的可以变量打印出来,也就是a和b。

    print可疑变量的代码要刚好在input中断之前。这样可以准确的知道这些可疑变量在出错之前的数据类型。

    因为变量的数据类型是会变化的,这个变量b在程序运行中变化了,所以不再适合计算。

    我们打印出a和b的数据类型以后,发现b的数据类型是str。这就是错误的原因。

    四:调试程序的延伸

    找到错误的变量是b以后,我们还要知道,这个变量是在哪里出错的,这样,我们就需要在变量b出现的不同位置都进行一次print输出,看一看是在哪里出现的错误。

    这一点没什么技巧,相信大家都能知道怎么做。

    在这里还是要推荐下我自己建的Python开发学习群:1156465813,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!

  • 相关阅读:
    Redis数据库概述
    分布式爬虫(一)------------------分布式爬虫概述
    Spark环境搭建(五)-----------Spark生态圈概述与Hadoop对比
    错误解决记录------------rhel安装Mysql软件包依赖 mariadb组件
    rhel 7安装Mysql
    Linux虚拟机搭建本地yum源
    rhel配置网络yum源
    Spark环境搭建(四)-----------数据仓库Hive环境搭建
    冲销会计凭证:FBRP与FB08的区别
    xk01创建供应商保存的时候,提示错误“科目800001已经存在”
  • 原文地址:https://www.cnblogs.com/shuchongzeishuai/p/13901192.html
Copyright © 2011-2022 走看看