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

2023-05-16

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

>>> print"Hello, World!"

File"", line 1

print"Hello, World!"

^

SyntaxError: Missing parentheses in call to 'print'

那是什么意思?

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

print"Hello, World!"

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

print("Hello, World!")

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

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

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

Hello, World!

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

>>> print"Hello, World!"

File"", 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"", 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"", 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,您必须编写:

print("Hello, World!")

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

但是反重力是存在的…你试过导入它吗?;)

反重力复活节彩蛋

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

print"Hello, World!"

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

print("Hello, World!")

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

如果您的代码同时在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=', ')

在python 3中,只能打印为:

print("STRING")

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中syntax error什么意思_在Python中,“SyntaxError:调用’print’时缺少括号”是什么意思?... 的相关文章

  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐