Прежде всего, это from __future__ import print_function
должна быть первая строка кода в вашем скрипте (за исключением некоторых исключений, упомянутых ниже). Во-вторых, как говорили другие ответы, теперь вы должны использовать print
как функцию. В этом весь смысл from __future__ import print_function
; чтобы перенести print
функцию из Python 3 в Python 2.6+.
from __future__ import print_function
import sys, os, time
for x in range(0,10):
print(x, sep=' ', end='') # No need for sep here, but okay :)
time.sleep(1)
__future__
операторы должны быть в верхней части файла, потому что они меняют фундаментальные вещи в языке, и поэтому компилятор должен знать о них с самого начала. Из документации :
Будущее утверждение распознается и обрабатывается специально во время компиляции: изменения в семантике базовых конструкций часто реализуются путем генерации другого кода. Может даже случиться, что новая функция вводит новый несовместимый синтаксис (такой как новое зарезервированное слово), и в этом случае компилятору, возможно, потребуется проанализировать модуль по-другому. Такие решения не могут быть отложены до времени выполнения.
В документации также упоминается, что единственное, что может предшествовать __future__
оператору, - это строка документации модуля, комментарии, пустые строки и другие будущие операторы.