Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2014 19:10:40

newbiegeek
Зарегистрирован: 2014-05-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как корректно использовать import

Добрый день всем.
Подскажите пожалуйста, в чем разница

Отрабатывает корректно

from scipy.stats import norm
phi = norm()

Но если сделать
import scipy as sc
phi = sc.stats.norm()
то этот вариант уже не работает.

Офлайн

#2 Май 28, 2014 19:56:59

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как корректно использовать import

from scipy.stats import norm

Python находит пакет scipy, ищет в нём пакет или модуль stats, находит пакет, компилирует в байт код(если ещё нету байт-кода) и исполняет его __init__.py(в нём импортируется norm), после того, как код исполнен, Python добавляет его в наше пространство имён и мы можем работать с ним.
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
>>> from scipy.stats import norm
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'norm': <scipy.stats.distributions.norm_gen object at 0x107aeeed0>, '__package__': None}

import scipy as sc
phi = sc.stats.norm()
Python ищет пакет или модуль scipy, находит пакет и компилирует(если ещё нету байт-кода) его __init__.py, а затем исполняет. В scipy/__init__.py не было упоминания о stats, поэтому sc ничего не знает про него и честно говорит - AttributeError: ‘module’ object has no attribute ‘stats’.



Офлайн

#3 Май 28, 2014 20:03:08

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как корректно использовать import

newbiegeek
Как корректно использовать import

Прочитать, как он работает в Python.
Марк Лутц, “Изучаем Python”.



Офлайн

#4 Май 29, 2014 12:52:00

newbiegeek
Зарегистрирован: 2014-05-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как корректно использовать import

То есть нельзя вызвать norm из примера через конструкцию from scipy.* as sc

Благодарю за ответ

Книгу скачал, изучаю.

Офлайн

#5 Май 29, 2014 13:05:56

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как корректно использовать import

newbiegeek
from scipy.* as sc
Это некорректная запись.



Отредактировано Budulianin (Май 29, 2014 13:06:58)

Офлайн

#6 Июнь 3, 2014 16:34:36

newbiegeek
Зарегистрирован: 2014-05-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как корректно использовать import

Читаю учебник Лутца, возник вопрос, подскажите пожалуйста, может я ошибся в примере
scipy.stats это часть scipy модуля, или две разных сущности?

Отредактировано newbiegeek (Июнь 3, 2014 16:34:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version