专栏首页张俊红介绍一种找bug的方法

介绍一种找bug的方法

总第186篇/张俊红

今天介绍一种找bug的方法,分段执行。这个概念不知道多会进入到我脑海中的,可能是有这么一种专门的叫法。特地去网上查了查,好像并没有,只查到了某地方警察办案在通过推行分段执行来提高效率。

那什么是分段执行呢?就是字面意思,把整体代码分成几段去执行。你应该有过这样的体验,好不容易写了一段特别特别长的代码,或者是收到别人发来一段特别长的代码时,自己一运行就报错。看着那大红色的报错信息陷入了迷茫。代码又这么长,我该如何下手去检查哪里出问题了呢?

这个时候有一个有效的办法就是分段执行。把那段长长的代码中几个关键的部分分开来执行,看哪一段会报错,这样就可以更加精准的定位问题,从而可以快速的解决问题。

比如下面这段Python代码:

int(str(df[df["city_id"] == 1]["Stime"][0])[11:13])

这段代码难吗?好像只有一行,看起来不是特别难。那这段代码简单吗?里面各种嵌套,好像也不是那么容易。我们把这段代码可以拆成以下几部分:

df[df["city_id"] == 1]

运行上面的代码,会把df表中city_id等于1的全部数据取出来。

df[df["city_id"] == 1]["Stime"]

运行上面的代码,会把上面取出来city_id等于1的数据里面的Stime列取出来,结果示例如下:

0 2017-04-05 18:30:39 1 2017-04-05 18:34:00 2 2017-04-05 18:36:51 3 2017-04-05 18:44:24 4 2017-04-05 18:46:38 5 2017-04-05 18:49:50 6 2017-04-05 19:05:26 7 2017-04-05 19:14:13 8 2017-04-05 19:28:36 9 2017-04-05 19:32:46 ……

df[df["city_id"] == 1]["Stime"][0]

再运行上面的代码会把Stime列中的第一个值取出来

str(df[df["city_id"] == 1]["Stime"][0])

再运行上面的代码,会把Stime列中的第一个值从时间类型转换为字符串类型

str(df[df["city_id"] == 1]["Stime"][0])[11:13]

再运行上面的这段代码,会把字符串第11:13位置的字符获取出来

int(str(df[df["city_id"] == 1]["Stime"][0])[11:13])

再运行上面的代码,会把取出来的字符串转化为整型。

如果你运行最开始那完整的一整行代码有问题时,你就可以把这一整段代码分成若干个过程去运行,然后看哪个分段有问题,解决完分段执行问题以后,合并到一起就可以完美运行了。

代码如人生哈,当一整段代码出现报错以后我们会去分段执行,看问题出在哪一部分。我们每个人可能都会那么一段不爽的时间,当遇到不爽的时候,我们经常会去回顾过去经历的几个关键节点,看在那些关键节点做了什么,当初做的那些选择和现在有什么关系。

掌握了分段执行,让你能够看到一长段代码报错以外不再慌张,也不需要再去求助别人,自己也可以游刃有余的解决问题。

你还可以看:

Python中的这几种报错你遇到过吗?

本文分享自微信公众号 - 张俊红(zhangjunhong0428),作者:张俊红

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网页是怎么构成的?

    总第60篇 所谓的网络爬虫就是从网页中指定位置找到对应的数据并下载,要想知道数据在什么位置,我们需要首先知道网页中的数据是如何显示与储存的,这篇主要是分享一下最...

    张俊红
  • 你写的Python代码规范吗?

    PEP 是 Python Enhancement Proposals 的缩写,直译过来就是「Python增强建议书」也可叫做「Python改进建议书」,说的直白...

    张俊红
  • 你能分清比例和比率吗?

    比例和比率,乍一看上去,好像这两个指标没啥区别,都是用来表示比的,但实际上两者不止概念有些差别,应用场景也不太一样。

    张俊红
  • python数据预处理之将类别数据转换为数值的方法

    有时候不得不处理一些非数值类别的数据,嗯, 今天要说的就是面对这些数据该如何处理。

    学到老
  • 小程序踩坑-http://xxx.com 不在以下 request 合法域名列表中

    写了一串json数据,把json数据放在了阿里云服务器中,用 wx.request({ })方法来请求json数据的时候,遇到了一点小坑,http://xxx....

    祈澈菇凉
  • python3操作json

    结论: 效果非常有意思。尤其是与《字符串转json》对比一下。如果仅仅看最后得出来的数据的话,根本是看不出来。

    py3study
  • 如何开发一个 Serverless Express 组件?

    抗击疫情,腾讯云在行动。Python 是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场...

    腾讯云大学
  • python对json的操作总结

    Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器...

    周小董
  • SCF+腾讯云API+企业微信机器人实现CDB慢查询提醒

    CDB数据库在腾讯云控制台可以看到每个数据库示例的操作日志。

    树根
  • python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理。 一般常见的接口返回数据也是json格式的,我...

    上海-悠悠

扫码关注云+社区

领取腾讯云代金券