最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python如何断点调试

    正文概述    2020-01-28   286

    python如何断点调试

    实际上没人能一次就写出完美的代码,除了我。但是世界上只有一个我。

    -- 林纳斯·托瓦兹(Linux 之父)

    既然不是神,写代码自然免不了要修改。修改代码的过程被称作调试,又叫 debug。

    刚接触编程的人,往往对调试代码没有很深的认识,觉得把功能做出来就完事了。一旦程序运行出现问题,便无从下手。而实际开发中,调试代码通常要花费比新编写代码更多的时间。所谓“行百里者半于九十”,这句话放在软件开发上一点不为过。你以为完成了 90% 开发工作的时候,剩下的工作可能还要花费差不多的时间。

    因此,选择合理的调试方法和工具,对于开发来说意义重大。

    在写 Python 代码的时候,我习惯的调试方法很简单,就是在程序里增加输出,以便了解程序的运行路径和变量的值。

    以下面这段代码为例:

    def twice(n):
        n *= 2
        return n
     
    a = input("a:")
    b = input("b:")
    if a > 3:
        b += 4
        if b > 5:
            c = a + twice(b)
        else:
            c = twice(a) + b
    else:
        b -= 2
        if b < 1:
            c = a - twice(b)
        else:
            c = twice(a) - b
    print c

    即使这样不长的一段代码,如果对于某些输入,最后输出的值和你的预期不一致,想要用肉眼从中看出到底哪里出了问题也并不是一目了然的事情。

    于是我会添加一些辅助的代码:

    def twice(n):
        n *= 2
        return n
     
    a = input("a:")
    b = input("b:")
    print "====a,b:", a, b 
    if a > 3:
        b += 4
        print "====1 b:", b
        if b > 5:
            c = a + twice(b)
            print "====1 c:", c
        else:
            c = twice(a) + b
            print "====2 c:", c
    else:
        b -= 2
        print "====2 b:", b
        if b < 1:
            c = a - twice(b)
            print "====3 c:", c
        else:
            c = twice(a) - b
            print "====4 c:", c
    print c

    运行后的效果:

    a:2
    b:4
    ====a,b: 2 4
    ====2 b: 2
    ====4 c: 2
    2

    通过添加类似的输出内容,就能比较清晰地了解程序的运行状态。

    不过,直接通过输出来调试,有时候会需要一点经验判断,决定在哪里输出什么数据。尤其当程序复杂之后,需要参考的数值会很多,全部都输出会很繁琐。

    一种更便捷更直观的方式就是使用断点调试。

    断点(break point)是指在代码中指定位置,当程序运行到此位置时变中断下来,并让开发者可查看此时各变量的值。因断点中断的程序并没有结束,可以选择继续执行。

    实现断点调试需要 IDE 的支持。下面以 PyCharm 来演示一下,仍然是前面的代码:

    python如何断点调试

    在某一行代码的左侧栏点击,就可以在这行增加断点。现在在 3 个 if 判断的地方都加上断点。

    选择 debug,程序开始运行。

    python如何断点调试

    输入 a、b 两个值之后,程序就在第一个 if 处中断,并且在工具栏中显示出当前程序中的各种数值。

    python如何断点调试

    选择“resume program”,程序就会继续执行,直到遇到下一个断点。

    python如何断点调试

    有了断点功能的帮助,调试的时候就方便许多,很容易观察程序运行时的状态。

    在断点调试时,还有个经常一起使用的功能就是单步调试。

    python如何断点调试

    在程序中断时,选择“Step Over”,会向下执行一行代码后继续中断。

    当所处代码行中有函数时,“Step Into”会中断在函数内部,之后将在其中单步执行。对应的,“Step Out”将中断在执行完当前所在函数后的位置。

    python如何断点调试

    这些操作在工具栏有快捷按钮,也可通过快捷键操作。

    python如何断点调试

    “工欲善其事,必先利其器”。把上述调试工具熟悉之后,对你的开发效率将会有很大提升。

    当然,比调试工具更重要的,还是调试的思路。遇到错误时,读懂报错信息,分析出错原因,并逐步定位问题所在,而不是盲目地修改代码、无意义地重复运行,才是解决问题的关键。

    python学习网,免费的在线学习python平台,欢迎关注!


    起源地下载网 » python如何断点调试

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元