在Python中,“SyntaxError:在调用‘print’时缺少括号”意味着什么?

在Python中,“SyntaxError:在调用‘print’时缺少括号”意味着什么?

当我试图使用print语句,它给出了以下错误:

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^SyntaxError: Missing parentheses in call to 'print'

那是什么意思?


慕容708150
浏览 1385回答 3
3回答

慕哥9229398

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

慕田峪7331174

语法从Python 2更改为Python 3。在Python 2中,print&nbsp;"Hello,&nbsp;World!"将起作用,但在Python 3中,使用括号作为print("Hello,&nbsp;World!")这相当于Scala和Java的语法。

慕斯709654

如果您的代码应该同时在Python 2和3中工作,您可以通过在程序开始时加载它来实现这一点:from&nbsp;__future__&nbsp;import&nbsp;print_function&nbsp;&nbsp;&nbsp;#&nbsp;If&nbsp;code&nbsp;has&nbsp;to&nbsp;work&nbsp;in&nbsp;Python&nbsp;2&nbsp;and&nbsp;3!然后您可以Python 3方式打印:print("python")如果您想在不创建新行的情况下打印某些内容,可以这样做:for&nbsp;number&nbsp;in&nbsp;range(0,&nbsp;10): &nbsp;&nbsp;&nbsp;&nbsp;print(number,&nbsp;end=',&nbsp;')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python