在Python 3中,“print”会抛出无效语法错误。

3
我是一名全新的Python学习者。我一直在Codecademy上进行课程学习。我目前正在使用Pydev / LiClipse。
在Codecademy的第一课中,它要求您将变量parrot设置为"Norwegian Blue"。然后,它希望您使用len字符串方法打印出parrot的长度。这非常简单,我立刻得到了正确答案:
parrot = "Norwegian Blue"
print len(parrot)

当我将完全相同的代码放入LiClipse中时,它返回:
SyntaxError:无效语法
当我将其更改为以下内容后,在LiClipse中工作: print(len(parrot))
有人能告诉我为什么这在codecademy中有效,但在LiClipse中无效,并且为什么添加括号可以解决该问题吗?

Python 2语法与Python 3语法 - Klaus D.
print 语句更改为 print(len(parrot)),它应该在 Python 2 和 Python 3 中都可以工作(后者需要括号,前者不需要)。 - Tom Karzes
4个回答

6
似乎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")

3

您需要考虑您所使用的版本。

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

parrot = "Norwegian Blue"
print len(parrot)

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

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

2
在CodeAcademy中它起作用是因为他们的解释器是Python 2.7, 在这里你不需要括号,因为 print 是一个声明。在 Python 3.0+ 中,print 需要括号,因为它是一个函数。
关于Python 2.7和3.0+之间的差异的更多信息可以在此处找到: 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()可用;然而,在Python 3.0+中省略()将无法正常工作,因此最好养成使用它们进行打印的习惯。
预计Python 2.7的生命周期将于2020年结束,所以您还有足够的时间。

1
在Python 3中,print语句需要加上括号。CodeAcademy可能使用的是Python 2,而你似乎正在使用Python 3。

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

来自文档

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接