Документация Python неофициальный перевод

__future__.md

62 строк · 5.6 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.6/library/__future__.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 27.10. `__future__` – Определения операторов будущего89`__future__` – настоящий модуль, служащий трём целям:1011- Чтобы не запутывать существующие инструменты, которые анализируют операторы import и ожидают найти импортируемые модули.12- Чтобы гарантировать, что [*future-операторы*](https://python-all.ru/2.6/reference/simple_stmts.html#future) в версиях до 2.1 как минимум вызывают исключения времени выполнения (импорт `__future__` не удастся, так как до версии 2.1 модуля с таким именем не существовало).13- Чтобы документировать, когда были введены несовместимые изменения и когда они станут – или стали – обязательными. Это форма исполняемой документации, и её можно программно просмотреть, импортировав `__future__` и изучив его содержимое.1415Каждая инструкция в `__future__.py` имеет вид:1617```python18FeatureName = _Feature(OptionalRelease, MandatoryRelease,19                       CompilerFlag)20```2122где обычно *OptionalRelease* меньше *MandatoryRelease*, и оба являются 5-кортежами того же вида, что и `sys.version_info`:2324```python25(PY_MAJOR_VERSION, # 2 в 2.1.0a3; целое число26 PY_MINOR_VERSION, # 1; целое число27 PY_MICRO_VERSION, # 0; целое число28 PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" или "final"; строка29 PY_RELEASE_SERIAL # 3; целое число30)31```3233*OptionalRelease* фиксирует первый релиз, в котором эта возможность была принята.3435Если *MandatoryRelease* ещё не наступил, *MandatoryRelease* предсказывает релиз, в котором возможность станет частью языка.3637В противном случае *MandatoryRelease* фиксирует, когда возможность стала частью языка; в релизах начиная с этого или позже модулям больше не нужен future-оператор для использования данной возможности, но они могут продолжать использовать такие импорты.3839*MandatoryRelease* также может быть `None`, что означает, что запланированная возможность была отменена.4041Экземпляры класса `_Feature` имеют два соответствующих метода: `getOptionalRelease()` и `getMandatoryRelease()`.4243*CompilerFlag* – это флаг (битовое поле), который должен передаваться четвёртым аргументом встроенной функции [`compile()`](https://python-all.ru/2.6/library/functions.html#compile) для включения возможности в динамически компилируемом коде. Этот флаг хранится в атрибуте `compiler_flag` экземпляров `_Feature`.4445Ни одно описание возможности никогда не будет удалено из `__future__`. С момента его введения в Python 2.1 следующие возможности попали в язык с помощью этого механизма:4647| Возможность | Необязательно в | Обязательно в | Эффект |48| --- | --- | --- | --- |49| nested\_scopes | 2.1.0b1 | 2.2 | [**PEP 227**](https://python-all.ru/2.6/library/__future__.html): *Статически вложенные области видимости* |50| генераторы | 2.2.0a1 | 2.3 | [**PEP 255**](https://python-all.ru/2.6/library/__future__.html): *Простые генераторы* |51| деление | 2.2.0a2 | 3.0 | [**PEP 238**](https://python-all.ru/2.6/library/__future__.html): *Изменение оператора деления* |52| absolute\_import | 2.5.0a1 | 2.7 | [**PEP 328**](https://python-all.ru/2.6/library/__future__.html): *Импорты: многострочные и абсолютные/относительные* |53| with\_statement | 2.5.0a1 | 2.6 | [**PEP 343**](https://python-all.ru/2.6/library/__future__.html): *Оператор with* |54| print\_function | 2.6.0a2 | 3.0 | [**PEP 3105**](https://python-all.ru/2.6/library/__future__.html): *Сделать print функцией* |55| unicode\_literals | 2.6.0a2 | 3.0 | [**PEP 3112**](https://python-all.ru/2.6/library/__future__.html): *Байтовые литералы в Python 3000* |5657> **См. также**58>59> **[*Future-операторы*](https://python-all.ru/2.6/reference/simple_stmts.html#future)**60>61> Как компилятор обрабатывает future-импорты.62