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 1
用 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 应该能满足吧。
|
15
pepesii 2022-10-08 11:16:01 +08:00
可以尝试下接入一些监控相关的东西, 例如 sentry
可以加入一些 dataclass 或者 pydantic 的验证 尽可能的把函数或者模块抽离的更细粒度一些,确保每个模块级别的东西没有问题,input 和 output 能得到保证 |
17
TimePPT 2022-10-08 11:20:35 +08:00
利用 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
|