Python——工作中的调试经验

                                      Python——工作中的代码调试经验

 

【说在前面】

作为一名算法工程师,结合个人的理解,需掌握四种语言:文字语言  +  符号语言  +  图形语言  +  编程语言

  • 文字语言 —— 能向不同的人清楚地表达自己的想法、观点与问题,编写技术文档、PPT汇报,以及总结能力等;
  • 符号语言 —— 要知道如何用专业的符号来描述问题(需要具备相应的数学功底,但不是纯秀数学功底,而不落地),并进行逻辑推理,证明等,不人云亦云,要有自己独到的见解;
  • 图形语言 —— 与别人讨论或交流时,用图形去解释问题,往往起到事半功倍的效果,高效率汇报工作的能力体现;
  • 编程语言 —— 自己写出来的算法,自己要会实现,也要看得懂、跑得通别人的代码,如Github、码云或Gitlab等

 

【Python编程语言中bug本质】

        无论是科研还是工作,这四种语言中,编程语言都很重要(如果科研或工作中不需要用到代码,那么请忽略),也可能是它需要投入的时间和精力更多,尤其是代码调试能力,大部分决定能否复现别人的论文或源码?决定是否能够快速定位线上问题,并解决。接下来,结合笔者科研与工作中的经验,记录一些python编程语言中bug本质。

  • 数据类型错误,如数据结构、tensor数据类型、数值类型、越界、空指针等等;
  • 包版本不兼容导致的错误,如机器学习或深度学习,经常会调用各种包,配置各种环境,这时很容易出现包与包版本不兼容的问题【本质:此包中的代码调用彼包中的代码,报错。原因:要么不支持该功能、要么数据类型问题、要么高版本不兼容低版本(Python常有的事)等等】;
  • 缺少某个包【本质:缺少对应的功能函数】,上篇文章已举例说明:Python——annoy的安装&如何安装包
  • 路径问题【因为路径不对导致无法进行文件操作,需注意不同操作系统中下的相对路径、绝对路径...,以及   "/ "     "\\ "     r"\"三者之间的区别】
  • ……

 

【如何调试】

分两步走:定位问题 + 解决问题

  • 定位:首先根据认(jian)真(chi)分析报错的问题,其次通过在对应报错代码行数中不断添加“打印”、“数据类型”、“对象具体值”等功能,便可快速定位问题。如:
  • print("-------------------, 调试点1", type(对象A), 对象A)

     

  • 解决:一般地,大家都会先去Google、百度、知乎、Github、简书、CSDN、StackOverflow等网上,看看是否有现成的解决方案,如果有,那就没啥说的。如果没有,这时候只能靠自己了,就得结合所报bug去思考出错的具体原因了,比如分析是不是因为上面总结到的一些bug本质导致的。通常情况,只要定位到问题,基本都可以解决或找到解决方案。

 

特别说明从码云和GitHub中下载别人的源码,自己又跑不通的时候,建议多去关注下issues(养成习惯)。比如BERT-Flow:https://github.com/bohanli/BERT-flow,源码跑不通,刚出来的源码肯定没啥相关资源或解读,这时候就多留意issues部分,可以自己提问,或者私信请教……

 

 


【写在最后】

整理些工作中常见bug的解决方案,持续中......

(1)TypeError: 'module' object is not callable(“模块”对象不可调用):https://zhuanlan.zhihu.com/p/56815118

根本原因:自己忘了python中模块和函数的区别,即用的是模块而不是函数!!!

已标记关键词 清除标记
相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业正在做毕设学生与需要项目实战练习Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带源码资料可作为毕设使用</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页