Нужна версия print () для Python 3.4 из __future__
В настоящее время, когда я
from __future__ import print_function
из Python 2.7.6 я, очевидно, получаю версию print() до добавления flush
Аргумент ключевого слова, который вошел в Python 3.3 в соответствии с документами. Python3, установленный в моей системе (Ubuntu), является Python 3.4, и я проверил, что его функция print() имеет flush
аргумент.
Как мне импортировать print()
функция от 3.4? Откуда __future__
получать старую функцию печати?
1 ответ
Вы не можете получить версию из 3.4, импортированную в Python 2.7, нет. Просто промойте 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 и выше.