Python/Учебник Python 2.6: различия между версиями

Содержимое удалено Содержимое добавлено
м орфография
Строка 1844:
Что происходит, когда пользователь пишет <code>from sound.effects import *</code> ? В идеале, мы бы надеялись, что таким образом код выходит в файловую систему и находит какие подмодули существуют в пакете, импортируя их все. К сожалению, такой метод не очень хорошо работает на платформах Windows, поскольку у файловой системы не всегда есть корректная информация о регистре имён файлов. На этих платформах нет гарантированного способа узнать, нужно ли импортировать файл <tt>ECHO.PY</tt> в качестве модуля <code>echo</code>, <code>Echo</code> или <code>ECHO</code>. (Например, у Windows 95 есть назойливая привычка показывать имена всех файлов с заглавной буквы.) Ограничение DOS на имя файла в формате 8+3 добавляет забавную проблему, связанную с длинными именами модулей.
 
Единственный выход для автора пакета — предоставить его подробное содержание. Оператор <code>import</code> использует следующее соглашение: если в коде файла <tt>__init__.py</tt> текущего пакета определён список <code>__all__</code>, то он полагается списком имён модулей, которые нужно импортировать если обнаружено выражение <code>from ''пакет'' import *</code>. На совести автора поддержка этого списка в соответсвующемсоответствующем состоянии в каждой новой версии пакета. Впрочем, авторы пакета могут его не поддерживать вообще, если не видят смысла в импортировании <code>*</code> из их пакета. Например, файл <code>sounds/effects/__init__.py</code> может содержать следующий код:
 
<source lang="python">__all__ = ["echo", "surround", "reverse"]</source>