Python 比“更具描述性的错误消息”;SyntaxError:无效语法“;

Python 比“更具描述性的错误消息”;SyntaxError:无效语法“;,python,python-3.x,Python,Python 3.x,学习python,来自php背景。 保持简短。有没有办法获取有关语法错误的更多描述性错误消息?比如php。 示例:print var应该给出类似“expecting(”,而不是标准的“SyntaxError:invalid syntax” 谢谢我的建议是使用一个可靠的IDE。在我安定下来之前,我只尝试了几个IDE,它是免费的(就像在freedom中一样)和跨平台的,但我相信许多其他IDE都提供类似的功能 带有语法突出显示的IDE甚至会在运行前尝试解析代码,并向您发出任何错误的信号(有时会出现“误

学习python,来自php背景。 保持简短。有没有办法获取有关语法错误的更多描述性错误消息?比如php。 示例:print var应该给出类似“expecting(”,而不是标准的“SyntaxError:invalid syntax”


谢谢

我的建议是使用一个可靠的IDE。在我安定下来之前,我只尝试了几个IDE,它是免费的(就像在freedom中一样)和跨平台的,但我相信许多其他IDE都提供类似的功能

带有语法突出显示的IDE甚至会在运行前尝试解析代码,并向您发出任何错误的信号(有时会出现“误报”,但这是个例外,它们通常非常准确)

这里有一个屏幕截图说明了它是如何工作的

这是错误的代码:

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

正如德尔南在对你的问题的评论中正确指出的那样,有很多可能的“正确”打印
后可能出现的内容,因此弹出窗口的冗长性。尽管如此,我发现此功能非常有用,因为它还显示来自未导入对象的方法、赋值前引用的变量等等


HTH!

请注意,这种详细程度在一般情况下是不可能的。从二进制运算符到逗号到点或赋值,任何东西在语法上都是有效的,而且解析器都知道有问题的代码可能已经重新定义了
print
,以使其中一些有意义。不过,这是一个公平的问题。请发布给您这个er的代码ror,也许我们可以做得更多help@inspector:他不是问如何解决特定错误,而是问是否以及如何从解析器获得更多帮助以解决所有此类错误。如果您要抱怨
print var
没有(:PIf如果我知道足够多的python来知道在哪里“正确”标记它,我就不需要问这个问题print语句到底出了什么问题(因为它不是python3)??@Franklin-由于编码声明,我假设您认为它不是python 3?但是在任何好的IDE中,您都可以定义语法规则,并且我的IDE设置为py3.0。原因是?因为我运行的是python 2.7,它接受python 3.x中的许多语法形式,例如
print('whatever')
,因此我现在提醒自己,只要有可能,就采用新的语法。No*NIX系统(我知道)还有,
env python
作为
python3
…同样,你应该从uu future\uuuu导入print\u函数中执行
,而不是使用假括号…@Franklin:Arch Linux已经
/usr/bin/python
作为python3。@daynyth-我感谢你和Franklin的反馈,但是-除了是OT之外-我不建议OP执行这个任务同样(事实上,我在回答中没有提到这一点)。使用py3.0语法检查py2.7代码对我来说很有用。这里我只是对照OP提出的示例展示IDE的一个功能(将
打印为函数,而不是语句)!但是再次感谢您的反馈…我不会拒绝它!)