Подтвердить что ты не робот

From... import OR import... как для модулей

Должен ли я использовать

from foo import bar

ИЛИ

import foo.bar as bar

когда импортирует модуль, и есть не нужно/хотите изменить имя (bar)?

Есть ли различия? Это имеет значение?

4b9b3361

Ответ 1

Предполагая, что bar является модулем или пакетом в foo, нет никакой разницы, это не имеет значения. Оба утверждения имеют точно такой же результат:

>>> import os.path as path
>>> path
<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>
>>> from os import path
>>> path
<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>

Если bar не является модулем или пакетом, вторая форма не будет работать; вместо этого бросается трассировка:

>>> import os.walk as walk
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named walk

Ответ 2

Единственное, что я вижу для второго варианта, это то, что вам понадобится столько строк, сколько нужно импортировать. Например:

import foo.bar as bar
import foo.tar as tar
import foo.zar as zar

Вместо простого выполнения:

from foo import bar, tar, zar

Ответ 3

Вы можете использовать как для переименования модулей, предположим, что у вас есть два приложения, у которых есть представления, и вы хотите их импортировать.

form app1 import views as views1
from app2 import views as views2

если вы хотите, чтобы множественное разделение запятой использовало импорт

>>> from datetime import date as d, time as t
>>> d
<type 'datetime.date'>
>>> t
<type 'datetime.time'>