慕哥9229398
此错误消息意味着您正在尝试使用Python 3来遵循一个示例或运行使用Python 2的程序。print声明:print "Hello, World!"上面的语句在Python 3中不起作用。在Python 3中,需要在要打印的值周围添加括号:print("Hello, World!")“SyntaxError:调用‘print’时缺少括号”是在Python3.4.2中添加的一条新错误消息,主要是为了帮助那些在运行Python 3时试图遵循Python 2教程的用户。在Python 3中,打印值从单独的语句变为普通的函数调用,因此现在需要括号:>>> print("Hello, World!")Hello, World!在早期版本的Python 3中,解释器只报告一个泛型语法错误,而没有提供任何有用的提示,说明可能出错的地方:>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^SyntaxError: invalid syntax至于为什么 print在Python 3中,它变成了一个普通的函数,它与语句的基本形式无关,而是与如何执行更复杂的操作有关,比如将多个项打印到带有尾部空格的stderr,而不是结束行。在Python 2中:>>> import sys>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 61 2 3 4 5 6在Python 3中:>>> import sys>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)1 2 3 4 5 6从2017年9月的Python3.6.3发行版开始,已经更新了一些与Python2.x打印语法相关的错误消息,以推荐它们的Python3.x对应项:>>> print "Hello!"
File "<stdin>", line 1
print "Hello!"
^SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?由于“调用打印中缺少的括号”是编译时语法错误,因此可以访问原始源代码,因此可以在建议的替换中包含行的其余部分的全文。然而,它目前并没有试图找出适当的引号来围绕这个表达式(这并不是不可能的,只是足够复杂,以至于还没有完成)。这个TypeError还为右班操作员定制了:>>> print >> sys.stderrTraceback (most recent call last):
File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'.
Did you mean "print(<message>, file=<output_stream>)"?由于此错误是在代码运行时引发的,而不是在编译时引发的,因此它无法访问原始源代码,因此使用元变量(<message>和<output_stream>)在建议的替换表达式中,而不是用户实际键入的任何内容。与语法错误情况不同,在自定义右移位错误消息中放置Python表达式周围的引号非常简单。