为什么print()打印空元组而不是换行符?

时间:2016-06-23 05:23:30

标签: python python-2.7 printing

该错误是由拼写错误引起的。请将此问题标记为偏离主题。

我对以下几行有点疑问。

from __future__ import print_function
print()

如果我打开Windows CLI并运行它,它将按预期运行。

enter image description here

当我将它粘贴在程序中并执行它时,它不是简单地打印换行符,而是打印()

enter image description here

以前有人遇到过这个吗?

其他详细信息:

如果我只使用这两行运行程序,它会按预期运行。

但出于某种原因,在我的计划中print()打印()。如果我用print(1)替换该行,则会按原样打印1

在Windows 8 64位上运行。 Python 2.7.11(v2.7.11:6d1b6a68f775)

最小,完整且可验证的示例:

class A:
    def f(self):
        print()

if __name__ == '__main__':
    a = A()
    a.f() 

最终更新:

哦,我的!!!!我是个白痴。

我有一个未来导入的驱动程序,但是类(这是另一个文件)没有!我确实有像print('abc', file=sys.stderr)这样的语句,但它们没有被执行,所以程序运行没有问题。

我上面的例子实际运行正常。我运行的示例没有导入。我正在编辑的文件(否则是该示例的精确副本)。

Woops !!!!

2 个答案:

答案 0 :(得分:4)

print是python2中的一个特殊语句。

当你这样做时:

from __future__ import print_function
print()

您实际上正在调用print function,它与python3中的行为相同。

在你的程序中,你调用语句,而不是函数。因此,print()打印一个空元组(确实是())。

附加说明:

如果我在示例的开头添加from __future__ import print_function,我会按预期获得换行符,而不是空元组。

答案 1 :(得分:1)

在您的第二个计划python myprog.py中,您需要添加from __future__ import print_function行。