python 是咋debug的( 三 )
超20种不同课程,Python/ML(机器学习)/DL(深度学习)及CV/NLP各种方向。
已有超10万付费学员。
马上开始学习,和“前辈们”一样进入心仪公司,夺取高薪,成为人生赢家。
也许你面试时的考官就是七月在线的讲师/学员!
■网友
一來語法錯誤IDE會指出來,二來有靜態分析。。單說debug的話有單步調試,log,之類的,各語言都差不多吧。。
■网友
print即可
■网友
曾经我也是个PyCharm单步调试狂魔,各种断点+带逻辑的花式断点等等调试。但现在我觉得,如果你写的代码需要不断step in, step over等等或者更复杂的方法来调试,那么有可能设计上就有问题。
那么当你对程序的正确性有疑惑的时候,我认为可以做以下这些:
1. 多写assert,好多时候可能自己的预期是错的。
2. 写unit test,往往可以节省大把调试时间。并且会督促你写可测试的程序。
3. Integration test也要写
4. 以上外加print和logger就大部分情况足矣
5. 函数,类足够短的时候小黄鸭调试法也可以。就是在桌子旁放一只塑料小黄鸭,然后和她一行一行解释这一行做了什么,为什么这么写。
然而请注意,这只是我自己的看法。如果你觉得你更适合IDE+断点,那么请用。这个世界是没有silver bullet的,坚守一个简单的heuristic也没有意义。
■网友
大部分ide都有断点功能,在断点处可以查看个变量值,观察代码运行逻辑。
pycharm应该算最好的python IDE了,简单好用
vscode也可以的
■网友
Python 有静态检查,不过只支持基本语法错误,大部分的类型错误和动态特性都不支持。但是Python 的动态特性使得 Python 在运行时能拿到丰富的信息,比如自带的 inspect 库可以获取代码运行时信息,还有 pdb 库可以用于命令行调试。
当然,主流的 Python IDE 都支持静态检测和断点调试,而且在调试中 IDE 可以支持 Python 绝大部分的动态特性,能有效提高开发效率。
我写了篇文章用于介绍如何用 VS Code 调试 Python,有兴趣的朋友来看看吧。
Fossen:Python in VS Code:调试中开发
■网友
看了下所有回答,都不如ipdb好用。ipdb顾名思义,ipython版的pdb。当然你如果能用ide,ide的工具也很方便,只不过很多时候,比如在生产环境的容器里,你无法使用ide。。。
■网友
这么多正经回答我写个有意思的,用LOL来debug
有一次我用socket+opencv做视频传输,结果写好的代码之前运行好好的,后来改用socketserver以后传出来的视频一卡一卡的,然后我就开始了漫长的debug之路,各种测试以后我的结论是程序应该没问题,我一度以为我路由器坏了,丢包太多,因为我用127.0.0.1本机运行的时候没问题。
然后我ping,100%,额,,,,,,,,,
然后我就玩游戏去了,恩,玩游戏,结果,lol竟然也一卡一卡的,自闭,延时30ms不高啊。
后来想起来LOL有过类似情况,因为动态桌面,upupoo的图标整理盒,然后就感觉有种若有若无的联系
立马杀了当时运行的myfinder和mydock。lol终于顺畅了,恩,打游戏。
程序当然也没问题了,流畅运行。
我用LOL来debug(逃)
■网友
如果是text editor环境下还是pdb首选吧import timedef print_star(func): def inner(*args, **kwargs): print("*" * 30) func(*args, **kwargs) print("*"*30) return innerdef print_percent(func): def inner(*args, **kwargs): print("%" * 30) func(*args, **kwargs) print("%" * 30) return inner@print_percent@print_stardef print_name(name): print(name)if __name__ == "__main__": start: float = time.time() print_name("Hello") import pdb pdb.set_trace() print(__name__) end: float = time.time() print(end-start)
推荐阅读
- 怎样成为一名合格的Python程序员?
- 电信主动上门维修是咋回事
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 电商网站支付流程的流失率是怎么样的从用户点击充值/支付按钮,到支付完成,其中每一步的流失比率都是咋样的
- 零基础入门学习啥语言好
- 圣才教育网站招募创业学生是咋回事
- 作为一个打码的,有没有一段时间特不想打码,后来是咋熬过来的
- 2016年5月5日腾讯的微信和QQ在App Store搜不到了是咋回事
- Python3.4和3.5区别大么
