Требуется версия print() от Python 3.4 от __future__

В настоящее время, когда я

from __future__ import print_function

из Python 2.7.6, я, видимо, получаю версию print() до добавления аргумента ключевого слова flush, который отправился в Python 3.3 в соответствии с docs. Python3, установленный в моей системе (Ubuntu), является Python 3.4, и я проверил, что его функция print() имеет аргумент flush.

Как импортировать функцию print() из 3.4? Откуда __future__ получить старшую функцию печати?

Ответы

Ответ 1

Вы не можете получить версию из 3.4, импортированную в Python 2.7, no. Просто очистите 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 и выше.