![]() | 1 flyaway 2022-10-08 10:07:28 +08:00 |
![]() | 2 Yourshell 2022-10-08 10:10:04 +08:00 除了 print 还可以使用 logging |
![]() | 3 MaxLv 2022-10-08 10:12:48 +08:00 pycharm debug 好使 |
![]() | 4 vone 2022-10-08 10:16:38 +08:00 |
5 siluni 2022-10-08 10:17:21 +08:00 ![]() 用 pytest 写单元测试吧 |
![]() | 6 kmyq 2022-10-08 10:18:57 +08:00 pycharm 直接调试就挺好使的啊 |
7 joApioVVx4M4X6Rf 2022-10-08 10:24:05 +08:00 没用 Py 搞过复杂的数值计算并且调试,计算应该会有输入和中间结果吧?多在关键点打点 log吗,有的时候服务很难调试,只能通过看 log 判断哪儿有问题 |
8 arischow 2022-10-08 10:26:50 +08:00 via iPhone 这跟有没有编译没有直接关系吧 |
![]() | 9 dantangfan 2022-10-08 10:30:21 +08:00 |
![]() | 10 yuelang85 2022-10-08 10:45:26 +08:00 @dantangfan 这个 pylane 相当不错,目测可以在线 debug 生产环境进程 |
11 CamD 2022-10-08 10:48:05 +08:00 via iPhone spyder 听说不错 |
![]() | 12 qq976739120 2022-10-08 10:57:52 +08:00 之前也做过一些把论文翻译成代码的工作, 尽量一段段写或者抽离成一个个小函数,确认没问题了再写下去. 全部写完整体测然后找中间的 bug,真的很头疼很头疼. 后来就是重写的. |
13 JYLu OP @arischow 主要是编译的过程可以一次性发现许多结构性的问题,比如类型错误,什么的。现在就是每次测试都要跑一遍,每跑一遍只能发现一个错误,就很折磨。 |
14 Anarchy 2022-10-08 11:12:28 +08:00 看楼主需求指编译对等工作,那就对应 lint 工具这块做的好不好了,pycharm 应该能满足吧。 |
![]() | 17 TimePPT PRO 利用 lint 工具做代码规范检查 利用 mypy 做静态类型检查 利用 radon 做圈复杂度等检查 学会捕获和处理异常 关键步骤打 log |
18 lookStupiToForce 2022-10-08 11:20:43 +08:00 pycharm debug mode 打断点或者勾选运行时报错自动中断进入调试都可以,保留你报错时的原发多层环境,方便调试和溯源 |
19 stein42 2022-10-08 11:24:11 +08:00 用 pycharm 可以实时提示语法错误,再加上类型标注可以避免类型错误。 单元测试可以确保一个函数得到期望的结果。 logging 可以在运行时输出一些信息,比 print 更好用。 |
![]() | 22 clino 2022-10-08 11:37:38 +08:00 说“py 没有编译”是错的,python 是编译成字节码以后运行的。 建议多写 test case 利于做回归测试,多加 assert 来针对边界情况进行低成本地预防。 |
![]() | 23 Blancmange 2022-10-08 12:08:56 +08:00 |
24 wuwuta170 2022-10-08 12:12:09 +08:00 print 大法好 如果 是服务类型的调试 就 logging 大法, |
25 wuwuta170 2022-10-08 12:12:35 +08:00 90%的 bug 都能通过 print 大法和 Logging 大法搞定 |
26 fakepoet 2022-10-08 12:50:36 +08:00 看到“代码质量就不高”这句,联想到了之前项目中做的一些“临时逻辑”,写的时候不注重抽象和便于测试,最后带来了很多隐藏 bug 。debug 的具体手段我觉得不太重要,print 和 logging 就够用了,建议把代码组织好,整洁一些,方便阅读也方便测试和 debug 。 |
![]() | 27 dantangfan 2022-10-08 13:43:21 +08:00 @yuelang85 没问题的,本来就是一直内部使用的线上诊断工具开源出来的。 |
29 fzls 2022-10-08 16:22:25 +08:00 |