Использует ли ключевое слово Python "from"? - PullRequest
13 голосов
/ 28 августа 2011

Существуют ли другие варианты использования ключевого слова Python "from" помимо import операторов?

Ответы [ 5 ]

26 голосов
/ 28 августа 2011

Нет и да.

В соответствии с официальной грамматикой Python 2.7.2 , единственное вхождение слова from в предложении import_from, поэтому нет.

В грамматике Python 3.1.3 появляется новое предложение

raise_stmt: 'raise' [test ['from' test]]

, так что да.

15 голосов
/ 28 августа 2011

В Python 2.x единственное использование from - для оператора from x import y.Однако для Python 3.x его можно использовать вместе с оператором raise, например:

try:
    raise Exception("test")
except Exception as e:
    raise Exception("another exception") from e
13 голосов
/ 01 сентября 2011

В Python 3.3 появился новый синтаксис для делегирования подгенерирующему , в котором используется ключевое слово from.

2 голосов
/ 19 августа 2018

Поскольку с момента публикации вопроса существует множество обновлений для python, здесь приведен новый вариант использования ключевого слова из в python3, который покажет вам использование с примером

* 1004.*
2 голосов
/ 28 августа 2011

Следующее использование

from __future__ import some_feature

синтаксически идентично оператору импорта, но вместо импорта модуля оно изменяет поведение интерпретатора некоторым образом, в зависимости от значения some_feature.

Например, from __future__ import with_statement позволяет вам использовать оператор Python with в Python 2.5, хотя оператор with не был добавлен в язык до Python 2.6.Поскольку он изменяет синтаксический анализ исходных файлов, любой импорт __future__ должен появляться в начале исходного файла.

Дополнительные сведения см. В документации по __future__ .

См. Документацию модуля __future__ для получения списка возможных __future__ импортов и версий Python, в которых они доступны.

...