python可以调试吗_调试-有什么好的方法可以使我的Python代码首次运行?
调试-有什么好的方法可以使我的Python代码首次运行?
我的代码中出现了很多错误。 因此,我希望能够在一开始就将它们最小化,或者在执行代码之前看到尽可能多的错误。 这可能吗,如果可以,我该怎么做?
Amara asked 2020-01-05T23:02:05Z
16个解决方案
35 votes
如果语法有问题,可以尝试使用语法突出显示的编辑器。 除非您有一种语言的感觉,否则简单的错误将不会突然出现。
调试的最简单形式是插入一些打印语句。 一种更高级(且可扩展)的方法是使用std lib中的日志记录模块。
交互式解释器是使用python代码的绝佳工具,而IPython是对内置REPL(读取Eval打印循环)的一项重大改进。
如果您确实想逐步执行代码,则python调试器称为pdb,可以从命令行调用它,也可以将其嵌入代码中。
如果您习惯使用完全集成的IDE,我建议您将Eclipse与pydev一起使用,并且PyCharm具有出色的商业功能,其中包括自动完成功能,快速访问文档以及众多快捷方式以及许多其他有趣的功能。
JimB answered 2020-01-05T23:02:33Z
30 votes
以下是一些有助于在Python中进行调试的技术:
使用交互式外壳程序,例如ipython。 Python是一种动态语言,您可以在键入时浏览代码。 Shell始终在我的编辑器的第二个窗口中运行。
从外壳程序复制粘贴到文档字符串中的代码说明了该函数(类,模块)的主要用法和特殊情况。 放在if __name__=="__main__"部分中的print()允许测试模块中的所有文档字符串。 doctest可以与unittest轻松集成。
将print()用于永远不会发生的事情。
print()可以解决许多调试问题; 日志记录模块适用于长期存在的python进程。
编写测试(不一定在代码之前),经常运行它们(自动或最多一次按键); 鼻子为单元测试提供扩展的测试发现和运行功能。
偶尔跑pylint。
此时,正式的python调试器几乎没有用。如果需要,Winpdb是一个外部多平台GPL'ed GUI python调试器。
jfs answered 2020-01-05T23:03:25Z
15 votes
所有真正酷的东西都可以在交互式解释器中轻松演示。 我认为这可能是良好设计的“黄金标准”:
您可以互动地上课吗?
如果您可以交互地进行工作,则可以放心地编写可测试,简单,可靠的单元测试和文档测试。
而且,更重要的是,您可以进行交互式浏览。 键入代码并确切地看到发生了什么事,没有比即时满足更好的了。
可以保留已编译的语言习惯(编写一堆东西,调试一堆东西,测试一堆东西)。 相反,您可以编写一些内容,进行探索,编写正式的测试,然后将您的一些内容附加到不断发展的最终项目中。
您仍然要进行总体设计。 但是,您不必浪费时间来编写可能有效或无效的代码。 在Python中,您可以编写有效的代码。 如果不确定,则可以交互地玩它直到确定。 然后,您编写有效的代码。
S.Lott answered 2020-01-05T23:04:08Z
10 votes
我是python的新手,并且一直在尝试几种不同的调试器。 到目前为止,这是我遇到的选项:
带有Pydev的Eclipse-如果您已经在使用eclipse,这可能是解决之道。 调试器运行良好,并且功能强大。
Komodo IDE-轻量级的Python IDE。 基本上是文本编辑器+调试器。 找出并立即产生成果真的很容易。
WinPDB-尝试下一个。 看起来很有特色,我可以使用选择的任何编辑器。
PDB-自从我阅读了有关WinPDB如何更好的替代方法以来,还没有尝试过。
使用%run命令的Ipython-我使用过IPython,但没有像这样的调试器。 我需要尝试一下。 (感谢小费,EOL)
Eric IDE-也在列表中尝试。
老式打印,断言-简单,有用,但不是完整的解决方案。
内存调试-为了调试内存问题,我遇到了一些工具:
objgraph-将生成png的参考图。 整齐。 还有其他功能,例如:import objgraph; print(objgraph.show_most_common_types(limit = 10))将打印内存中最常见的10种类型。
gc模块-直接与垃圾收集器进行交互。
笨重-堆分析器。 例如:从guppy import hpy; hp = hpy(); print(hp.heap())将打印最常见的类型,其内存使用情况等。
这是一个非常不完整的列表,但希望它是一个好的开始。
scottm answered 2020-01-05T23:05:22Z
10 votes
Python提供了一个调试器,您可以通过它调试代码,检查变量并进行操作。 请参阅[http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/],该指南可以指导您进行操作...
还要检查python标准库参考中的pdb[http://www.python.org/doc/2.5.2/lib/module-pdb.html]
Amit answered 2020-01-05T23:05:47Z
7 votes
尽早测试并经常测试。
这并不一定意味着首先要进入测试驱动的设计池(尽管这不是一个坏主意)。 这只是意味着,只要有可用的东西,就测试您的对象和方法。 在进行测试之前,请不要等到拥有大量代码。
花一些时间来学习测试框架。 如果您键入测试用例很简单,那么您很有可能会这样做。 如果您没有任何类型的框架测试,可能会很痛苦,因此请避免使用它。 因此,尽早养成良好的习惯,这样一来,您的问题就会减少。
Bryan Oakley answered 2020-01-05T23:06:17Z
7 votes
通常,我只使用一堆打印语句。
page = grabpage(url)
print "Page content:", page
print "page type():", type(page)
有时执行以下操作很有用:
debug = True
if debug: print "page content", page
..您可以通过将调试变量更改为False来快速禁用所有调试打印语句。
尽管在大多数情况下,打印调试会使您受益匪浅,但有时很难调试诸如循环或一系列if / else / try / except / etc之类的东西。 为此,允许单步执行代码并设置断点的调试器很有用。
winpdb myscript --arg 4 -b 4包含在Python中。 这是一个很好的简单教程。 您甚至可以执行一些操作,例如在运行时更改变量(本教程将介绍)。 可以在这里找到更长的教程
有一个非常不错的GUI等效pdb-Winpdb
基本上,您运行winpdb myscript --arg 4 -b 4,然后它将命令加载到终端中,在左侧显示您的代码,并带有当前,本地/全局变量(及其值)列表以及当前的调用堆栈。
然后,您可以通过单击“步骤”(或F6)来浏览代码。 F5运行代码。 如果单击行号旁边的行,它将设置一个断点,代码将在该断点处自动步进(当您按run键时)。
我发现它易于使用,并且具有许多其他增强功能(例如远程调试),因此您可以在要调试的应用程序中运行后端部分(rpdb2),然后将Winpdb连接到它(加密)。 在PDB中支持线程和其他有用的东西,您也可以访问类似pdb的控制台。
dbr answered 2020-01-05T23:07:14Z
6 votes
我使用此技巧将Python设置为在出现未捕获的异常时自动启动调试器。 这样,您可以轻松地检查程序的状态而无需太多的日志代码。 (此外,向我发送低吼通知。)
哦,这样,您可以通过添加以下代码在代码中创建一个断点
if answer == 42:
1/0
Michael Kuhn answered 2020-01-05T23:07:39Z
5 votes
自由地使用assert语句。
answered 2020-01-05T23:07:58Z
4 votes
在执行之前识别错误是静态检查/分析的领域。 我很幸运使用PyChecker进行Python代码的基本静态检查。
pycheesecake网站上有一个非常好的Python测试工具摘要。
Andrew Beyer answered 2020-01-05T23:08:23Z
4 votes
Eclipse的PyDev插件是我选择的工具。 它可以识别简单的语法错误和缩进错误,并用红线强调该错误。 它具有强大的调试器,甚至还有一个名为PyLint的插件,它会警告您有关危险代码的信息。
编辑:它还具有关于运行时错误,部分自动完成和一些其他精美功能的用户友好堆栈跟踪。
再次编辑:我没有注意到在顶部文章中提到了pydev。 我希望我能带来一些其他好处。
Nailer answered 2020-01-05T23:08:52Z
1 votes
python -m pdb yourcode.py应该做到这一点。另外,您可以在代码中“导入pdb”,然后使用pdb.set_trace()设置断点。请参阅手册以获取更多信息:[http://www.python.org/doc/2.5.2/lib/module-pdb.html]
Sridhar Iyer answered 2020-01-05T23:09:13Z
1 votes
有一个非常不错的Python GUI调试器Winpdb。 试试看。建立在wxWidgets库和多平台上。
RobertVa answered 2020-01-05T23:09:33Z
1 votes
为了获得最全面的体验,您可以使用完整的IDE,例如PyCharm:
[http://blog.jetbrains.com/pycharm/files/2011/05/template-debug2.png]
aaimnr answered 2020-01-05T23:09:57Z
0 votes
Eric4 IDE还具有出色的内置调试器。
fccoelho answered 2020-01-05T23:10:17Z
0 votes
IPython Python Shell具有%run命令,该命令在出现问题时会自动调用调试器。 然后,您可以检查变量,单步执行代码等。
您可以使用%run命令从IPython运行程序。
更普遍地说,就像其他答案中提到的那样,一个好的Python shell是您的朋友。 IPython是您最好的朋友。 :)
Eric O Lebigot answered 2020-01-05T23:10:46Z
python可以调试吗_调试-有什么好的方法可以使我的Python代码首次运行?相关推荐
- python无向加权图_图:无向图(Graph)基本方法及Dijkstra算法的实现 [Python]
一般来讲,实现图的过程中需要有两个自定义的类进行支撑:顶点(Vertex)类,和图(Graph)类.按照这一架构,Vertex类至少需要包含名称(或者某个代号.数据)和邻接顶点两个参数,前者作为顶点的 ...
- keil 调试 操作系统_调试操作系统:内存分配的经验教训
keil 调试 操作系统 It began, as so many investigations do, with a bug report. 和许多调查一样,它是从一个错误报告开始的 . The n ...
- python商城源码_腾讯大佬用了12小时讲完的Python,整整400集,拿走不谢
Python在近几年越来越受追捧,很多童鞋或者职场小伙伴想要提升技能-学习Python. 这是非常好的事情,但问题在于很多人不知道学Python做什么,所以什么零碎细末.艰难晦 涩.长篇大论的都去看, ...
- 运维学python用不上_作为运维你还在想要不要学Python,看完这篇文章再说!
原标题:作为运维你还在想要不要学Python,看完这篇文章再说! 本文由马哥教育Python自动化实战班5期学员推荐,转载自简书,作者为Li.Yingjie,内容略经小编改编和加工,观点跟作者无关,最 ...
- 用python实现bt下载_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ##### class Torrents(): ''' Define a torrent ''' def __init__(self,torrent): ...
- python 自动化框架打包_听说很多人都不会打包,教你Python实现前端自动化打包部署!...
作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈 ...
- python布尔测试对象_面试题十九期-测试开发面试题之python系列-这个中~
坚持梦想 就算所有人都不支持你.这条路会很曲折,你也会一度认为是不是自己选错了,但只要坚持,就算最后没有成功,但努力了就不会有遗憾. 测试开发python系列面试题 01 单选题 1.下列哪个语句在P ...
- python大家都会吗_一篇告诉你为什么人人都应该学点Python?
全文主要分为以下四个部分,各位看官可以自行选择阅读,写文的目的是希望大家能在学习了解Python的同时能在日常生活中运用上,若有补充,欢迎在评论区留言.本文默认已经安装好Python 2.7环境,需要 ...
- python vb 哪个好学_最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
原标题:最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几 在很多人眼里程序员的标配就是黑框眼镜+格子衫+双肩包+牛仔裤+运动鞋,拥有了这些可能就被判定为一个程序员. 而如何判定一个程 ...
最新文章
- 网页编程的过程中,怎样让改变标签的属性
- 滨州学院计算机自荐考试题型,滨州学院2004—2005学年第一学期期末考试计算机科学教育专业02级《数据库原理》试题及答案(3份,另附习题集)...
- [JDK8] Stream
- python numpy读取数据_python使用numpy读取、保存txt数据的实例
- 异或运算交换两个整数
- OSPF——虚链路详解(含配置命令)
- HTML5超级玛丽简易版(有源码)
- linux关于管道通信,球热心人帮忙 关于linux环境下管道通信
- Linux双网卡下的网络故障排查
- linux实现wifi中继,树莓派Wifi中继
- 【Matlab绘图要点汇总】Matlab图中添加图例+添加轴标签+添加文本+添加注释
- 烽火2640路由器命令行手册-01-基础配置命令
- 学习Java的第六天:for循环,while循环,do-while循环
- VMware+Ubuntu安装使用说明
- javacv 视频转音频(提取视频中音频)
- 如何将excel表格导入word_word办公技巧:如何让Excel与Word文档数据同步
- 几种趋势指标的测试结论
- 水果生鲜网上商城系统开发成品案例
- 抵御“黄貂鱼”攻击,谷歌使出禁用2G“大招”
- 计算机思维入门kodu建模观后感,Kodu Game Lab少儿编程软件 v1.5.49.0 最新版
热门文章
- java 随机数 分布_java – 随机数的分布
- 栈子系统c语言,数据结构(栈子系统:c实现)
- java 只读数组_在Java 8中创建方法引用数组的速记方法?
- mysql php查询错误_php查询mysql数据库错误
- 四种python 单继承的实现方式
- Python基础教程:字典和Json
- Python3-join()和split()的用法
- Python 内存分配时的小秘密
- VMware ubuntu 虚拟机只剩下lo回环网卡,上不了网(无法上网、无法连接网络)(环回)
- 为计算机系的学生建立视图,数据库及其应用2010年1月真题