为什么 Python2.7 坚持 Python3 打印语句?

Why does Python2.7 insist on Python3 print statement?

我试图了解鼻子和单元测试是如何在我正在学习的包中使用的。这个包使用了 numpy 自带的 nosetester(为什么这样做也让我很困惑)。我的 nosetester.py 在 /usr/local/lib/python2.7/dist-packages/numpy/testing/。我是 运行ning Python 2.7.6。但是,当我添加以下形式的跟踪语句时:

print "Hi"

到 NoseTester class 的 __init__ 方法,我得到一个语法错误:

  File "/usr/local/lib/python2.7/dist-packages/numpy/testing/nosetester.py", line 182
print "Hi"
         ^

语法错误:语法无效

当我使用

print ("Hi")

一切正常。我知道我的 Python 解释器正在使用 2.7.6:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

这让我想知道为什么要坚持 Python3,还有什么地方我可以 运行 加入这个吗?

看起来 nosetester.py 有一行像

from __future__ import print_function

这使得 Python2 风格的打印语句 print "foo" 不可用,需要您改用 Python3 风格的打印函数 print("foo")