Python——工作中的调试经验

本文分享了作为一名算法工程师在Python编程中遇到的常见bug类型,包括数据类型错误、包版本不兼容、缺少包、路径问题等,并提供了如何通过添加打印语句和检查数据类型来定位问题的方法。此外,强调了在遇到问题时利用在线资源和关注项目issues来寻找解决方案的重要性。
摘要由CSDN通过智能技术生成

                                      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中模块和函数的区别,即用的是模块而不是函数!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值