【发布时间】:2016-06-23 05:23:30
【问题描述】:
错误是由拼写错误引起的。请将此问题标记为离题。
我对以下几行有点问题。
from __future__ import print_function
print()
如果我打开我的 Windows CLI 并运行它,它会按预期运行。
当我将它粘贴到程序中并执行它时,它不是简单地打印换行符,而是打印()。
以前有人遇到过这种情况吗?
其他详情:
如果我只用这两行代码运行一个程序,它就会按预期运行。
但由于某种原因,在我的程序中print() 打印出()。如果我用print(1) 替换该行,它会打印出1。
在 64 位 Windows 8 上运行。 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)之类的语句,但是它们没有被执行,所以程序运行没有问题。
我上面的例子实际上运行良好。我正在运行的示例没有导入。我正在编辑的文件(否则是示例的精确副本)确实如此。
糟糕!!!!
【问题讨论】:
-
它只是在我的控制台中打印一个换行符。我没有得到一个空元组。我在一台 Windows 机器上,如果它有所作为的话。
-
我无法在 python 2.7 上重现这个,我也在 Windows 上。顺便说一句,你不需要这个类中的构造函数,从
object子类化是一个好习惯(虽然这个特定的类不是必需的) -
在 Python 2.7.x
print()返回一个元组,但在 python 3.5.xprint()返回一个换行符。你检查过你的 Python 版本了吗? -
不。 Win7、i3、HP lappy - 在运行脚本或从命令行输入的 IDLE、CLI 或 PowerShell 中看不到此行为。 FWIW,当我在没有 future 导入的情况下运行您的可验证示例时,正如您所期望的那样,我确实打印了一个“()”...
-
即使使用导入,该代码也只会为我打印一个空行。 Python 2.7.11,Arch Linux x64。
标签: python python-2.7 printing