当我尝试在 Python 中使用 print
语句时,出现以下错误:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: Missing parentheses in call to 'print'
这意味着什么?
原文由 ncoghlan 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我尝试在 Python 中使用 print
语句时,出现以下错误:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: Missing parentheses in call to 'print'
这意味着什么?
原文由 ncoghlan 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
此错误消息表示您正在尝试使用 Python 3 来遵循示例或运行使用 Python 2
print
语句的程序:上面的语句在 Python 3 中不起作用。在 Python 3 中,您需要在要打印的值周围添加括号:
“SyntaxError:调用‘print’时缺少括号” 是 Python 3.4.2 中添加的一条新错误消息,主要是为了帮助在运行 Python 3 时尝试遵循 Python 2 教程的用户。
在 Python 3 中,打印值从一个不同的语句变成了一个普通的函数调用,所以它现在需要括号:
在 Python 3 的早期版本中,解释器只报告一个一般的语法错误,而没有提供任何有用的提示来说明可能出了什么问题:
至于 为什么
print
成为 Python 3 中的一个普通函数,这与语句的基本形式无关,而是与你如何做更复杂的事情有关,比如用尾随空格将多个项目打印到 stderr而不是结束这一行。在 Python 2 中:
在 Python 3 中:
从 2017 年 9 月发布的 Python 3.6.3 开始,一些与 Python 2.x 打印语法相关的错误消息已更新,以推荐其对应的 Python 3.x:
由于“打印调用中缺少括号”的情况是编译时语法错误,因此可以访问原始源代码,因此它能够在建议的替换行的其余部分包含全文。但是,它目前并没有尝试找出合适的引号来围绕该表达式(这并非不可能,只是足够复杂以至于尚未完成)。
为右移运算符引发的
TypeError
也已定制:由于此错误是在代码运行时引发的,而不是在编译时引发的,因此它无法访问原始源代码,因此使用元变量(
<message>
和<output_stream>
) 在建议的替换表达式中,而不是用户实际键入的任何内容。与语法错误情况不同,在自定义右移错误消息中将引号放在 Python 表达式周围很简单。