Изменения языка, потенциально способные нарушить работу существующего кода, обычно в Python вводятся постепенно. Они часто появляются как необязательные расширения, которые по умолчанию отключены. Для включения таких расширений используется специальный оператор import следующего вида:
from __future__ import название_средства
Для просмотра списка будущих языковых средств, которые можно импортировать, выполните вызов dir на модуле future после его импортирования или поищите соответствующие сведения в руководстве по библиотеке. Согласно его документации названия будущих средств никогда не удалятся, поэтому совершенно безопасно оставлять импортирование future даже в коде, запускаемом под управлением версии Python, где такие средства присутствуют как нормальные.
К примеру для Python 3.7.9 список средств из будущих версий будет выглядеть так:
>>> import __future__
>>> print(dir(__future__))
… [‘CO_FUTURE_ABSOLUTE_IMPORT', 'CO_FUTURE_ANNOTATIONS', 'CO_FUTURE_BARRY_AS_BDFL', 'CO_FUTURE_DIVISION', 'CO_FUTURE_GENERATOR_STOP', 'CO_FUTURE_PRINT_FUNCTION', 'CO_FUTURE_UNICODE_LITERALS', 'CO_FUTURE_WITH_STATEMENT', 'CO_GENERATOR_ALLOWED', 'CO_NESTED', '_Feature', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'absolute_import', 'all_feature_names', 'annotations', 'barry_as_FLUFL', 'division', 'generator_stop', 'generators', 'nested_scopes', 'print_function', 'unicode_literals', 'with_statement']
>>Click here to continue<<