10.5.7 断点

“断点”可以设置在特定的代码行上,当程序执行到达该行时,它迫使调试器暂停。在一个新的文件编辑器窗口中,输入以下程序,它模拟投掷 1000  次硬币。将它保存为 coinFlip.py。


import  random heads  =  0
for  i  in  range(1,  1001):
➊            if  random.randint(0,  1)  ==  1:
heads  =  heads  +  1 if  i  ==  500:
➋                      print('Halfway  done!')
print('Heads  came  up  '  +  str(heads)  +  '  times.')

在半数时间里,random.randint(0,1)调用➊将返回 0,在另外半数时间将返回 1。这可以用来模拟 50/50 的硬币投掷,其中 1 
代表正面。当不用调试器运行该程序时,它很快输出下面的内容:
Halfway  done!
Heads  came  up  490  times.

如果启用调试器运行这个程序,就必须点击几千次 Over 按钮,程序才能结束。如果你对程序执行到一半时 heads 的值感兴趣,等 1000 次硬币投掷完 500 次,可以在代码行 
print('Halfway done!')➋上设置断点。要设置断点,在文件编辑器中该行代码上点击右键,并选择Set Breakpoint,如图 10-5 所示。

 你不会在 if 语句上设置断点,因为 if 语句会在循环的每次迭代中都执行。通过在 if 语句内的代码上设置断点,调试器就会只在执行进入 if 语句时才中断。
带有断点的代码行会在文件编辑器中以黄色高亮显示。如果在调试器下运行该程序,开始它会暂停在第一行,像平时一样。但如果点击 Go,程序将全速运行,直到设置了断点的代码行。然后可以点击 
Go、Over、Step 或Out,正常继续。
如果希望清除断点,在文件编辑器中该行代码上点击右键,并从菜单中选择
Clear Breakpoint。黄色高亮消失,以后调试器将不会在该行代码上中断。


小结
断言、异常、日志和调试器,都是在程序中发现和预防缺陷的有用工具。用


Python 语句实现的断言,是实现心智正常检查的好方式。如果必要的条件没有保持为 True,它将尽早给出警告。断言所针对的错误,是程序不应该尝试恢复的,而是应该快速失败。否则,你应该抛出异常。
异常可以由 try 和 except 语句捕捉和处理。logging 模块是一种很好的方式,可以在运行时查看代码的内部,它比使用 print() 
函数要方便得多,因为它有不同的日志级别,并能将日志写入文本文件。
调试器让你每次单步执行一行代码。或者,可以用正常速度运行程序,并让调试器暂停在设置了断点的代码行上。利用调试器,你可以看到程序在运行期间,任何时候所有变量的值。
这些调试工具和技术将帮助你编写正确工作的程序。不小心在代码中引入缺陷,这是不可避免的,不论你有多少年的编码经验。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值