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

您所在的位置:网站首页 python调用方法没有括号 在Python中,“SyntaxError:调用’print’时缺少括号”是什么意思?

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

2024-07-12 19:47| 来源: 网络整理| 查看: 265

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

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

那是什么意思?

此错误消息意味着您正试图使用python 3来执行示例或运行使用python 2 print语句的程序:

1print"Hello, World!"

上面的语句在Python3中不起作用。在python 3中,需要在要打印的值周围添加括号:

1print("Hello, World!")

"syntaxerror:调用'print'时缺少括号"是一条新的错误消息,它添加在python 3.4.2中,主要是为了帮助那些在运行python 3时尝试遵循python 2教程的用户。

在Python3中,打印值从一个不同的语句更改为一个普通的函数调用,因此现在它需要括号:

12>>> print("Hello, World!") Hello, World!

在早期版本的python 3中,解释器只报告一个通用语法错误,而不提供关于可能发生的错误的任何有用提示:

12345>>> print"Hello, World!"   File"", line 1     print"Hello, World!"                         ^ SyntaxError: invalid syntax

至于为什么print在python 3中成为一个普通的函数,这与语句的基本形式无关,而是与如何用尾随空格将多个项目打印到stderr而不是行尾等更复杂的事情有关。

在Python 2中:

123>>> import sys >>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6 1 2 3 4 5 6

在Python 3中:

123>>> 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月的python 3.6.3版本开始,更新了一些与python 2.x打印语法相关的错误消息,以推荐其对应的python 3.x版本:

12345>>> print"Hello!"   File"", line 1     print"Hello!"                  ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?

由于"调用打印时缺少括号"是一个编译时语法错误,因此可以访问原始源代码,因此可以在建议的替换中包含行的其余部分的全文。然而,它目前并没有试图找出合适的引号放在表达式周围(这不是不可能的,只是足够复杂,还没有做到)。

为右换档操作员升起的TypeError也经过了定制:

1234>>> print >> sys.stderr Traceback (most recent call last):   File"", line 1, in TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean"print(, file=)"?

由于此错误是在代码运行时引发的,而不是在编译时引发的,因此它无法访问原始源代码,因此在建议的替换表达式中使用元变量(和,而不是用户实际键入的任何变量。与语法错误的情况不同,在自定义的右移位错误消息中,在python表达式周围加引号很简单。

相关讨论 感谢@antti haapala在顶部添加了直接回答问题的摘要,然后继续详细解释错误消息的来源:) 我也把答案转到了社区wiki上,因为它在不断地积累,所以我觉得这不太合适(有关错误消息和这个问题是如何共同发展的背景,请参阅bugs.python.org/issue21669)。 你好!我认为这个工具可以帮助某人docs.python.org/2/library/2to3.html 在2.7文件中添加来自future import print_函数的行,以将新的python 3 print()行添加到代码中。因此,代码与2.7+和3.0兼容+ 如何强制系统使用python 2.7和3?也许这是个好地方。

不幸的是,旧的XKCD漫画不再完全是最新的。

由于python 3.0,您必须编写:

1print("Hello, World!")

还有人还得写一本antigravity库:(

相关讨论 但是反重力是存在的…你试过导入它吗?;) 反重力复活节彩蛋

语法从python 2改为python 3。在Python 2中,

1print"Hello, World!"

可以,但在python 3中,使用括号作为

1print("Hello, World!")

这是Scala和Java附近的等价语法。

如果您的代码同时在python 2和3中工作,那么您可以在程序开始时加载它来实现这一点:

1from __future__ import print_function   # If code has to work in Python 2 and 3!

然后您可以用python 3方式打印:

1print("python")

如果要在不创建新行的情况下打印内容,可以执行以下操作:

12for number in range(0, 10):     print(number, end=', ')

在python 3中,只能打印为:

1print("STRING")

但是在python 2中,不需要括号。

除了这里的直接答案外,我们还应该注意python 2和3之间的另一个关键区别。官方的python wiki几乎涉及到所有主要的差异,并着重于您应该何时使用其中的任何一个版本。这篇博客文章也很好地解释了当前的python宇宙,以及移动到python 3的未知难题。

据我所知,您开始学习Python语言。在继续执行python 3路径之前,您应该考虑前面提到的文章。不仅需要更改一些语法,还需要考虑哪些包对您可用(Python2的优势),以及可以在代码中进行的潜在优化(Python3的优势)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3