Python 中的“SyntaxError:调用‘print’时缺少括号”是什么意思?
- 2024-11-19 08:38:00
- admin 原创
- 44
问题描述:
当我尝试print
在 Python 中使用语句时,它给出了以下错误:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: Missing parentheses in call to 'print'
这意味着什么?
请参阅使用关键字参数 end=' ' 打印时获取 SyntaxError以了解相反的问题。
请参阅Python 3 不带括号的打印以了解解决方法,并确认print
无法像 Python 3 中的语句那样工作。
解决方案 1:
当您尝试将 Python 3 语法与 Python 2 打印语句一起使用时,会出现错误消息SyntaxError: Missing parentheses in call to 'print' 。
例子:
print "Hello, World!"
在 Python 3 中,print 语句被 print() 函数取代,需要用括号括住要打印的值。
解决方案
print("Hello, World!")
在 Python 3 中,print 语句被 print() 函数取代,需要用括号括住要打印的值。
>>> 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!")?
由于“调用打印时缺少括号”的情况是编译时语法错误,因此可以访问原始源代码,因此它能够在建议的替换中包括该行其余部分的完整文本。但是,它目前不会尝试找出该表达式周围的适当引号(这并非不可能,只是非常复杂,尚未完成)。
TypeError
右移运算符的升角也已定制:
>>> 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>)"?
由于此错误是在代码运行时而不是编译时引发的,因此它无法访问原始源代码,因此在建议的替换表达式中使用元变量(<message>
和<output_stream>
),而不是用户实际输入的内容。与语法错误情况不同,在自定义右移错误消息中,将 Python 表达式放在引号中很简单。
解决方案 2:
不幸的是,旧的xkcd 漫画已经不再是最新的了。
从 Python 3.0 开始你必须这样写:
print("Hello, World!")
有人仍然需要编写该antigravity
库 :(
解决方案 3:
从 Python 2 到 Python 3,语法有所变化。在 Python 2 中,
print "Hello, World!"
可以工作,但在 Python 3 中,使用括号作为
print("Hello, World!")
这与 Scala 的语法等效,并且接近 Java。
解决方案 4:
在 Python 3.x 中,print
现在是一个函数,而不是像2.x 中那样是一个语句。
因此,print
通过将其作为函数调用来使用,因此需要括号:
Python 2.x:打印“指环王”
Python 3.x:打印(“指环王”)
print
创建函数有多个优点:
该
print
函数在打印多个值(现在是函数的参数)时提供了更大的灵活性。特别是,它允许参数分散:
>>> items = ['foo', 'bar', 'baz']
>>> print(*items, sep='+')
foo+bar+baz
print
只需编写一个名为 的新函数即可替换的调用行为print
。使用 语句则无法做到这一点print
。
解决方案 5:
如果您的代码需要同时在 Python 2 和 3 中运行,则可以通过在程序开始时加载以下内容来实现:
from __future__ import print_function # If code has to work in Python 2 and 3!
然后你可以用 Python 3 的方式打印:
print("python")
如果您想要打印某些内容而不创建新行 - 您可以这样做:
for number in range(0, 10):
print(number, end=', ')
解决方案 6:
在 Python 3 中,只能打印如下:
print("STRING")
但在 Python 2 中,括号不是必需的。
解决方案 7:
Python2.7
我还可以补充一点,我知道和之间的所有语法变化Python3
,并且我的代码正确地写成print("string")
和甚至print(f"string")
......
但经过一段时间的调试后,我意识到我的 bash 脚本正在像这样调用 python:
python 文件名.py
这会导致默认使用 来调用我的 python 脚本,python2.7
从而导致错误。因此,我将 bash 脚本更改为:
python3 文件名.py
当然,它使用 python3 来运行修复错误的脚本。
解决方案 8:
print('Hello, World!')
您正在使用 python 3,打印时需要括号。
解决方案 9:
所以我收到了这个错误
from trp import BoundingBox, Document
File "C:UsersKshitij AgarwalAppDataRoamingPythonPython39site-packages rp__init__.py", line 31
print ip
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(ip)?
这是一个 Python 包错误,其中已使用了 Python2,而您可能正在 Python3 上运行它。
一种解决方案可能是将包文件夹中每个文件的每一行都转换为 Python2print something
到 Python3 ,这不是一个好主意
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件