当前位置: 首页 > 知识库问答 >
问题:

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

百里泓
2023-03-14

当我尝试在Python中使用print语句时,它会给我这个错误:

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

那是什么意思?

共有3个答案

涂煌
2023-03-14

从Python 2到Python 3的语法发生了变化。在Python 2中,

print "Hello, World!" 

将起作用,但在Python 3中,使用括号作为

print("Hello, World!")

这是Scala的等价语法,接近Java。

贝自怡
2023-03-14

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

自Python 3.0以来,您必须编写:

print("Hello, World!")

有人仍然需要编写反重力库:(

长孙鸿振
2023-03-14

此错误消息表示您正试图使用Python 3来遵循示例或运行使用Python 2打印语句的程序:

print "Hello, World!"

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

print("Hello, World!")

“语法错误:调用‘打印’中缺少括号”是Python 3.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, 6
1 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月的Python 3.6.3版本开始,一些与Python 2. x打印语法相关的错误消息已经更新,以推荐它们的Python 3. x对应版本:

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

由于“调用打印时缺少括号”案例是编译时语法错误,因此可以访问原始源代码,因此它能够在建议的替换中包含该行其余部分的全文。但是,它目前并没有尝试找出适当的引号来放置在该表达式周围(这并非不可能,只是足够复杂以至于还没有完成)。

还自定义了为右移操作员引发的类型错误:

>>> print >> sys.stderr
Traceback (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>)"?

由于此错误是在代码运行时而不是编译时引发的,因此它无法访问原始源代码,因此使用元变量(

 类似资料:
  • 问题内容: 当我尝试在中使用语句时,它给了我这个错误: 这意味着什么? 问题答案: 此错误消息表示你尝试使用Python 3遵循示例或运行使用Python 2 print语句的程序: 上面的语句在Python 3中不起作用。在Python 3中,你需要在要打印的值周围添加括号: “ 对的调用中缺少括号”是Python 3.4.2中新增的一条错误消息,主要用于帮助试图在运行Python 3时遵循Py

  • 我在解析JSON对象时发现了这段示例代码,我对它有点了解,但希望得到更详细的解释: 我知道这是拆分记录,以得到单个记录由新的行字符,但我想知道为什么它看起来这么复杂?是不是我们不能有这样的东西: 那么括号做什么呢?为什么我们在 谢谢

  • 问题内容: 我正在解析JSON对象,并找到了我理解的示例代码行,但希望您对以下内容进行更详细的说明: 我知道它是通过换行符来拆分记录以获得单个记录,但是我想知道为什么它看起来如此复杂?我们不能有这样的情况吗: 那么括号[]的作用是什么?为什么我们有两次x 谢谢 问题答案: 您的示例中的“方括号”从旧列表中构建了一个新列表,这称为列表理解。 的基本思想是: 的可以是任何表达式,含有或没有。

  • 问题内容: 在Python中像在C中一样具有特殊含义吗?我在Python Cookbook中看到了这样的函数: 你能向我解释一下还是指出我在哪里可以找到答案(Google将解释为通配符,因此我找不到令人满意的答案)。 问题答案: 假设知道位置和关键字参数是什么,下面是一些示例: 范例1: 如你在上面的示例中所见,函数签名中仅包含参数。由于d和k不存在,因此将它们放入字典。该程序的输出为: 范例2:

  • 问题内容: 我在jQuery文件中找到了这个: 花括号做什么? 问题答案: 在您的情况下,这是一个传递给CSS函数的对象。 在这里你也可以使用 这是物体的另一个例子

  • 问题内容: 运算符在Python中是什么意思,例如l或代码? 在解释器内部如何处理? 它会影响性能吗?是快还是慢? 什么时候有用,什么时候没有? 应该在函数声明中还是在调用中使用它? 问题答案: 单颗星将序列集合解压缩为位置参数,因此你可以执行以下操作: 这将打开元组的包装,使其实际执行为: 双星 只使用字典并因此命名参数来做同样的事情: 你还可以结合: 另请参见Python文档的4.7.4-解包