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

发布于 2021-01-29 14:10:18

目前,当我

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__获得较早的打印功能?

关注者
0
被浏览
123
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您无法从导入到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及更高版本中的版本相同。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看