Python from future unicode

__future__ в Python

__future__ в Python

  1. Используйте __future__ для print_function в Python
  2. Используйте __future__ для unicode_laterals в Python
  3. Используйте __future__ для разделения в Python
  4. Используйте __future__ для absolute_import в Python
  5. Используйте __future__ для annotations в Python
  6. Используйте __future__ для вложенных областей
  7. Используйте __future__ для генераторов Python
  8. Используйте __future__ для утверждения with

future был введен в Python 2.1, и его инструкции меняют способ интерпретации кода Python. Он сообщает интерпретатору скомпилировать некоторые операторы как те, которые будут доступны в будущих версиях Python, т.е. Python использует функцию from future import feature для резервного копирования функций из более высоких версий Python в текущий интерпретатор.

Когда вы видите from __future__ import , это означает, что функция из последней или предстоящей версии Python была перенесена в более раннюю версию.

В этом руководстве будут обсуждаться функции, уже включенные в Python 3 в более ранних версиях Python с использованием __future__ .

Используйте __future__ для print_function в Python

Использование ключевого слова print в качестве функции вместо оператора придает ему большую гибкость, что помогает расширить возможности ключевого слова print . Основная функция from __future__ import print_function — перенести функцию print из Python 3 в Python 2.

from __future__ import print_function for x in range(0,10):  print(x, sep=' ', end='') 

Обратите внимание, что print здесь используется как функция, которая ранее использовалась как оператор в Python 2.x.

Читайте также:  Rezka ag series drama 1752 doktor haus 2004 html

Используйте __future__ для unicode_laterals в Python

Это позволяет вам изменять тип строковых литералов.

Строковые литералы в Python 2 по умолчанию являются ‘str’, но если мы используем from __future__ import unicode_literals , тип строкового литерала изменится на Unicode .

Но с from __future__ import unicode_literals мы получаем следующий вывод.

from __future__ import unicode_literals type("h") 

Обратите внимание, что при использовании from __future__ import нам не нужно добавлять к каждой строке префикс u , чтобы рассматривать ее как Unicode .

Используйте __future__ для разделения в Python

В версиях Python 2.x используется классическое разделение.

Простое деление 8 на 7 возвращает 0 в Python 2.x.

Использование from __future__ import division позволяет программе Python 2 использовать __truediv__() .

from __future__ import division print(8/7) 

Используйте __future__ для absolute_import в Python

В Python 2 вы могли иметь только неявный относительный импорт, тогда как в Python 3 вы могли иметь явный или абсолютный импорт. __future__ import absolute_import позволяет заключать в скобки несколько операторов импорта, заключенных в скобки.

from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,  LEFT, DISABLED, NORMAL,END) 

Обратите внимание, что без функции __future__ import absolute_import вы не сможете заключить несколько операторов import в одну строку кода.

Используйте __future__ для annotations в Python

Аннотации — это выражения Python, связанные с различными частями функции.

Здесь использование from __future__ import annotations меняет способ оценки типа аннотаций в модуле Python. Он откладывает оценку аннотаций и волшебным образом обрабатывает все аннотации как разные аннотации.

from __future__ import annotations class C:  @classmethod  def make(cls) -> C:  return (cls) 

Обратите внимание, что приведенный выше код будет работать только в том случае, если __future__ import написано в верхней части кода, поскольку он изменяет то, как Python интерпретирует код, т.е. он обрабатывает аннотации как отдельные строки.

Используйте __future__ для вложенных областей

С добавлением __future__ import nested_scopes в Python были введены статически вложенные области видимости. Он позволяет запускать следующие типы кода без возврата ошибки.

def h():  .  def m(value):  .  return m(value-1) + 1  . 

Обратите внимание, что приведенный выше код вызвал бы ошибку NameError до Python 2.1.

Используйте __future__ для генераторов Python

Генератор — это функция в Python, определенная как обычная функция. Тем не менее, он делает это с ключевым словом yield, а не return всякий раз, когда ему нужно сгенерировать определенное значение.

Здесь с использованием from __future__ import generators были введены функции генератора для сохранения состояний между последовательными вызовами функций.

def gen():  c, d = 0, 1  while 1:  yield d  c, d = d, c+d 

Используйте __future__ для утверждения with

Это исключает использование операторов try. except путем добавления оператора with в качестве ключевого слова в Python. Он в основном используется при выполнении файлового ввода-вывода, как показано в примере ниже.

with open('workfile', 'h') as a:  read_data = a.read() 

Copyright © 2023. All right reserved

Источник

__future__ Python

Изображение баннера

Если вы просто изучаете Python 3 модуль future вам не нужен.

Он используется для совместимости давно устаревшего Python 2 с современным Python 3 кодом и наоборот. Также для совместимости некоторых старых 3.X версий с новыми. В общем для работы с legacy.

Импортировать из __future__ нужно в самом начале скрипта сразу за docstring если она есть.

python-future — это недостающий уровень совместимости между Python 2 и Python 3. Это позволяет вам использовать единую чистую кодовую базу, совместимую с Python 3.x, для поддержки как Python 2, так и Python 3 с минимальными затратами.

Он предоставляет будущие и прошлые пакеты с обратными портами и прямыми портами функций из Python 3 и 2. Он также поставляется с futurize и pasteurize, настраиваемыми скриптами на основе 2to3, которые помогут вам легко конвертировать код Py2 или Py3 для поддержки Python 2 и 3 в единой чистой кодовой базе в стиле Py3, модуль за модулем.

Известными проектами, использующими python-future для совместимости с Python 2/3, являются Mezzanine и ObsPy.

Описание модуля можно изучить здесь

Примеры

division

Рассмотрим деление в Python 3

Python 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0] on linux Type «help», «copyright», «credits» or «license» for more information. >>> >>> 2 / 3 0.6666666666666666

В Python 2 деление по умолчанию целочисленное, но с помощью __future__ можно импортировать division и тогда деление заработает как в третьем Python

Python 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2 Type «help», «copyright», «credits» or «license» for more information. >>> >>> 2 / 3 0 >>> from __future__ import division >>> 2 / 3 0.6666666666666666

unicode_literals

>>> type(«») >>> from __future__ import unicode_literals >>> type(«»)

annotations

Рассмотрим класс C и classmethod make()

Если запустить скрипт ошибки не будет

# t.py class C : @ classmethod def make (cls): return cls()

Добавим typehint (аннотацию) в которой используем переменную. Появится ошибка, так как переменная не определена.

# t.py class C : @ classmethod def make (cls) -> C: return cls()

Traceback (most recent call last): File «t.py», line 3, in class C: File «t.py», line 5, in C def make(cls) -> C: NameError: name ‘C’ is not defined

Ошибки не будет, например, если вместо переменной C использовать в аннотации строку «C», но это не то, что нам нужно.

# t.py class C : @ classmethod def make (cls) -> «C» : return cls()

Попробуем использовать __future__

# t.py from __future__ import annotations class C : @ classmethod def make (cls) -> C: return cls()

barry_as_FLUFL

Python 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2 Type «help», «copyright», «credits» or «license» for more information. >>> >>> >>> 0 <> 0 False >>> 0 <> 1 True

В Python 3 такой оператор не предусмотрен

Python 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0] on linux Type «help», «copyright», «credits» or «license» for more information. >>> >>> >>> 0 <> 0 File «», line 1 0 <> 0 ^ SyntaxError: invalid syntax >>> from __future__ import barry_as_FLUFL >>> >>> 0 <> 0 False >>> 0 <> 1 True

man

python -m pydoc __future__

Источник

Оцените статью