Показаны сообщения с ярлыком import. Показать все сообщения
Показаны сообщения с ярлыком import. Показать все сообщения

7 апреля 2016 г.

Python: from import для импорта пакетов

Использование инструкции import могут оказаться несколько неудобным для импортирования  пакетов,  потому  что  в  этом  случае  далее  в  программе  вам придется часто вводить полные пути для обращения к именам. В примере из предыдущего раздела, например, приходилось каждый раз вводить полный путь от dir1, когда необходимо было обратиться к переменой z. Если попытаться  непосредственно  обратиться  к  dir2 или  mod,  будет  получено  сообщение  об ошибке:
>>> dir2.mod
NameError: name ‘dir2’ is not defined
>>> mod.z
NameError: name ‘mod’ is not defined

15 ноября 2015 г.

Повторная загрузка модулей

Как мы уже видели, программный код модуля по умолчанию запускается всего один раз за все время работы программы. Чтобы принудительно повторно загрузить модуль и запустить программный код в нем, необходимо явно вызвать встроенную функцию reload. В этом разделе мы исследуем, как использовать возможность повторной загрузки модулей, чтобы сделать систему более динамичной. В двух словах:
•  При  вызове  операции  импортирования  (с  помощью  инструкций  import и from) программный код модуля загружается и выполняется, только когда модуль импортируется в первый раз за время работы программы.
•  При последующих попытках импортировать модуль будет использоваться объект уже загруженного модуля. Повторная загрузка и запуск программного кода в этом случае не происходит.

11 ноября 2015 г.

Вложенные пространства имен

Операция импорта не дает возможности доступа к внешним областям видимости, но она дает возможность обращаться к вложенным областям видимости. Используя квалифицированные пути к именам атрибутов, вполне возможно погрузиться в сколь угодно глубоко вложенные модули и получить доступ к их атрибутам. Например, рассмотрим следующие три файла.

16 августа 2014 г.

Пространства имен модулей

Модули будут, вероятно, более понятны, если представлять их, как простые пакеты имен, – то есть место, где определяются переменные, которые должны быть доступны остальной системе.
С технической точки зрения каждому модулю соответствует отдельный файл, и интерпретатор создает объект модуля, содержащий все имена, которым присвоены какие-либо значения в файле модуля. Проще говоря, модули – это всего лишь пространства имен (места, где создаются имена), и имена, находящиеся в модуле, называются его атрибутами.В данной тематике мы разберем как работает этот механизм.


25 мая 2014 г.

Когда использовать import

И так, в предыдущем посте, было рассказано о минусах инструкции from и о том, что использование import более надежней и практичней. Поэтому речь пойдет о использовании import.

Минусы инструкции from

Здравствуйте читатели. Ну что, вот вам еще очередная порция текста по программированию используя Python )
На этот раз речь пойдет о минусах использовании инструкции from.


5 мая 2014 г.

Равны ли import и from ?

В предыдущей записи после from потребовалось выполнить инструкцию import, чтобы получить доступ к имени модуля  small,  –  инструкция  from  копирует  только  имена  из одного  модуля в другой и ничего не присваивает самому имени модуля. Инструкция  from,
приведенная ниже:
from module import name1, name2    # Копировать только эти два имени
эквивалентна следующей последовательности, по крайней мере, концептуально:
import module          # Получить объект модуля
name1 = module.name1   # Скопировать имена с помощью присваивания
name2 = module.name2
del module             # Удалить имя модуля

Как и все операции присваивания, инструкция from создает новые переменные в импортирующем модуле, которые ссылаются на объекты с теми же именами в импортируемом файле. При этом копируются только имена, а не сам модуль. При использовании формы from * этой инструкции (from module import *) эквивалентная последовательность действий та же самая, только при этом копируются все имена, определенные на верхнем уровне импортируемого модуля.

Обратите внимание, что на первом шаге инструкция from выполняет обычную операцию import. Вследствие этого инструкция from всегда импортирует весь модуль целиком, если он еще не был импортирован, независимо от того, сколько  имен  копируется  из  файла.  Нет  никакой  возможности  загрузить  только часть модуля (например, только одну функцию), но так как модули – это байт-код, а не машинный код, влияние на производительность оказывается незначительным.

Не забываем ставить лайк и репосты, чем больше лайков тем больше тут будет постов )