比“SyntaxError: invalid syntax”更详细的错误信息

7

我正在学习Python,之前使用的是PHP。简单说明一下,是否有办法获得更详细的语法错误信息?就像在PHP中一样。

例如:print var应该给出类似于“期望(”而不是标准的“SyntaxError:invalid syntax”的错误提示信息。

谢谢。


2
请注意,一般情况下无法提供如此详细的信息。从二元运算符到逗号、点号或赋值操作符,所有这些在语法上都是有效的。对于解析器来说,它并不知道所讨论的代码可能已经重新定义了print函数以使得这些操作有意义。尽管如此,这是一个合理的问题。 - user395760
发布导致错误的代码,也许我们可以提供更多帮助。 - inspectorG4dget
7
@inspector: 他不是在询问如何解决特定的错误,而是在问是否以及如何从解析器获得更多帮助来自行解决所有这样的错误。 - user395760
如果你要抱怨print var没有括号,那么应该将其标记为[python-3.x]。 - Wooble
1
如果我懂足够的Python知道在哪里“正确地”标记它,我就不需要问这个问题了。 - gyaani_guy
1个回答

1

我的建议是使用一个稳定的集成开发环境(IDE)。我之前尝试过几个,最终选择了Aptana Studio,它是免费的(自由软件)且跨平台。当然,我相信还有许多其他类似功能的选择。

带有语法高亮的IDE甚至可以在运行之前就尝试解析你的代码,并指出任何错误(有时可能会有“误报”,但这只是例外,一般情况下非常准确)。

这里是一个演示它工作原理的截图。

以下是错误的代码:

enter image description here

这是当您将鼠标悬停在红色 X 标记上方时显示的弹出窗口。

enter image description here

正如delnan在您的问题评论中正确指出的那样,print后面可能有很多可能的“正确”内容,因此弹出窗口非常冗长。尽管如此,我认为这个功能非常有用,因为它还显示了未导入对象的方法、引用之前分配的变量等等。
希望对您有所帮助!

打印语句有什么问题(因为它不是Python3)? - user780363
1
没有我所知道的任何*NIX系统将env python作为python3...此外,你应该使用from __future__ import print_function而不是使用虚假括号... - user780363
1
@Franklin:Arch Linux将/usr/bin/python作为Python 3。 - Daenyth
1
@Daenyth - 我很感激你和Franklin的反馈,但是 - 除了离题之外 - 我并没有建议OP做同样的事情(实际上我在我的回答中也没有提到)。使用py3.0语法检查py2.7代码对我来说是有效的。在这里,我只是展示IDE的一个特性,与OP提出的例子进行比较(print作为函数而不是语句)!但是再次感谢您的反馈... 我不会拒绝它! :) - mac
IDE会让你高度依赖,当你最需要的时候,在别人的电脑上甚至无法使用基本文本编辑器编写几行代码。 - fiatjaf
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接