"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")'` 不会?