Need Python 3.4 version of print() from __future__

前端 未结 1 1206
梦如初夏
梦如初夏 2020-12-19 14:55

Currently, when I

from __future__ import print_function

from Python 2.7.6, I apparently get a version of print() prior to the addition of the <

相关标签:
1条回答
  • 2020-12-19 15:10

    You cannot get the version from 3.4 imported into Python 2.7, no. Just flush sys.stdout manually after printing:

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

    Or you can create a wrapper function around print() if you have to have something that accepts the keyword argument:

    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()
    

    This creates a replacement version that'll work just the same as the version in 3.3 and up.

    0 讨论(0)
提交回复
热议问题