当前位置: 首页 > 面试题库 >

需要__future__的Python 3.4版本的print()

白志勇
2023-03-14
问题内容

目前,当我

from __future__ import print_function

从Python
2.7.6开始,我显然在添加flush关键字参数之前获得了print()的版本,根据docs,关键字参数已在Python
3.3中使用。我的系统(Ubuntu)中安装的Python3是Python 3.4,我验证了其print()函数具有该flush参数。

如何print()从3.4导入功能?从何处__future__获得较早的打印功能?


问题答案:

您无法从导入到Python 2.7的3.4中获取版本,否。只需sys.stdout在打印后手动冲洗:

import sys

print(...)
sys.stdout.flush()

或者,print()如果您必须具有一些可以接受关键字参数的东西,则可以围绕它创建包装函数:

from __future__ import print_function
import sys
try:
    # Python 3
    import builtins
except ImportError:
    # Python 2
    import __builtin__ as builtins


def print(*args, **kwargs):
    sep, end = kwargs.pop('sep', ' '), kwargs.pop('end', '\n')
    file, flush = kwargs.pop('file', sys.stdout), kwargs.pop('flush', False)
    if kwargs:
        raise TypeError('print() got an unexpected keyword argument {!r}'.format(next(iter(kwargs))))
    builtins.print(*args, sep=sep, end=end, file=file)
    if flush:
        file.flush()

这将创建一个替换版本,该替换版本将与3.3及更高版本中的版本相同。



 类似资料:
  • 我有这个错误:

  • 问题内容: 注意:这似乎是“ javac”程序中的限制。 我有需要为Java 5 JVM构建的Java 6代码。我以前使用javac ant目标(同时使用JDK编译器和ecj)的工作使我相信,这仅仅是为javac设置源和目标的问题。因此,此pom.xml片段: 在具有Maven支持的Eclipse 3.7中可以正常工作。不幸的是,直接从命令行运行Maven给了我 与产生的相同。澄清一下,这是Ubu

  • 在使用IntelliJ IDEA运行JUnit测试时,我得到 我该如何纠正这一点呢? 使用SDK 1.7 模块语言级别为1.7 Maven build工作良好。(这就是为什么我在IDEA configuration issue中相信这一点)

  • 所以我更改了我的依赖项,如下所示: 但我不知道从哪里可以把1.6级改成1.8级... 当我编译应用程序时,我遇到了这个错误: 提前致谢:)

  • 如何解决那个错误?? 我的生成分级文件是

  • 我正在尝试使用最新的Gradle版本(2.0),但我不断得到这个消息,当点击Gradle构建在终端。为什么它要1.10版本?我对Gradle是个新手,所以我想好好想想。 需要Gradle版本1.10。当前版本为2.0 最后一件事是在中,我选择了“使用可定制的gradle包装器” 设置为C:\Program Files(x86)\gradle\gradle-2.0 build.gradle文件: 更