"print" 在 Python 3 中抛出无效的语法错误

Posted

技术标签:

【中文标题】"print" 在 Python 3 中抛出无效的语法错误【英文标题】:"print" throws an invalid syntax error in Python 3 【发布时间】:2016-02-11 05:01:08 【问题描述】:

我是 python 的新手。我一直在学习 Codecademy 的课程。我目前也在使用 Pydev / LiClipse。

在 Codecademy 的第一堂课中,它希望您将变量 parrot 设置为“挪威蓝”。然后它希望您使用 len 字符串方法打印鹦鹉的长度。这很简单,我马上就得到了答案:

parrot = "Norwegian Blue"
print len(parrot)

当我将完全相同的代码放入 LiClipse 时,它​​返回:

SyntaxError: 无效语法

当我将它更改为时,它在 LiClipse 中工作:

打印(len(鹦鹉))

有人可以告诉我为什么这在 codecademy 中有效,但在 LiClipse 中无效,以及为什么添加括号会修复它?

【问题讨论】:

Python 2 语法与 Python 3 语法 print 语句更改为print(len(parrot)),它应该可以在Python 2 和Python 3 中工作(后者需要括号,前者不需要)。 【参考方案1】:

听起来 Pydev/LiClipse 使用的是 Python 3,而 Codeacademy 使用的是 python 2.x 或其他旧版本。当 python 从 2.x 更新到 3 时所做的更改之一是 print 现在是一个函数。

Python 2:

print "stuff to be printed"

Python 3:

print("stuff to be printed")

【讨论】:

【参考方案2】:

您必须考虑您正在使用的版本。

在 Python 2 中,您的代码如下所示:

parrot = "Norwegian Blue"
print len(parrot)

在 Python 3 中,您的代码如下所示:

parrot = "Norwegian Blue"
print ( len(parrot) )

【讨论】:

【参考方案3】:

它在 CodeAcademy 中有效,因为他们的解释器是 Python 2.7,您不需要括号,因为 print 是一个语句。在 Python 3.0+ 中,print 需要括号,因为它是一个函数。

更多关于 Python 2.7 和 3.0+ 之间的区别的信息可以在这里找到:

What's New In Python 3.0

与上页打印的一些示例差异:

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

Old: print              # Prints a newline
New: print()            # You must call the function!

如果您使用的是遗留系统和大量与您的私人环境中的很多,那么了解两者之间的区别是很好的。在 Python 2.7 及更低版本中,print() 有效;但是,省略 ()s 在 Python 3.0+ 中不起作用,因此最好养成使用它们进行打印的习惯。

Python 2.7 的生命周期预计将在 2020 年结束,因此无论如何您都有充足的时间。

【讨论】:

【参考方案4】:

在 Python 3 中 print 被更改为需要括号。 CodeAcademy 可能正在使用 Python 2,而您似乎正在使用 Python 3。

https://docs.python.org/3/whatsnew/3.0.html#print-is-a-function

来自文档

打印是一个函数 打印语句已替换为 print() 函数,用关键字参数替换大部分 旧打印语句 (PEP 3105) 的特殊语法。例子:

【讨论】:

以上是关于"print" 在 Python 3 中抛出无效的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python2 中将所有:print "string" 替换为: print("string"),对于 Python3? [复制]

Python print - 如何在 print end="\r" 之前清除输出

为啥 `python -c 'print('howdy')'` 会产生错误(在 zsh 中),但 `python -c 'print("howdy")'` 不会?

为啥 print("\0007") 不响?

pytho列表知识点:

linux 查看第几周