@@ -1072,6 +1072,12 @@ msgid ""
10721072"could take a long time and importing sub-modules might have unwanted side-"
10731073"effects that should only happen when the sub-module is explicitly imported."
10741074msgstr ""
1075+ "Что же происходит, когда пользователь пишет ``from sound.effects import *``?"
1076+ " В идеале можно было бы надеяться, что это каким-то образом пройдёт по "
1077+ "файловой системе, найдёт все подмодули в пакете и импортирует их. Это могло "
1078+ "бы занять много времени, а импорт подмодулей мог бы иметь нежелательные "
1079+ "побочные эффекты, которые должны происходить только при явном импорте "
1080+ "подмодуля."
10751081
10761082#: ../../tutorial/modules.rst:503
10771083msgid ""
@@ -1085,16 +1091,28 @@ msgid ""
10851091"for importing \\ * from their package. For example, the file "
10861092":file:`sound/effects/__init__.py` could contain the following code::"
10871093msgstr ""
1094+ "Единственное решение — чтобы автор пакета предоставил явный перечень его "
1095+ "содержимого. Инструкция :keyword:`import` использует следующее соглашение: "
1096+ "если в файле :file:`__init__.py` пакета определён список с именем "
1097+ "``__all__``, он считается списком имён модулей, которые должны быть "
1098+ "импортированы при выполнении ``from package import *``. Автор пакета должен "
1099+ "поддерживать этот список в актуальном состоянии при выпуске новой версии "
1100+ "пакета. Авторы пакетов также могут решить вовсе не поддерживать его, если не"
1101+ " считают полезным использование импорта со звёздочкой для своего пакета. "
1102+ "Например, файл :file:`sound/effects/__init__.py` может содержать следующий "
1103+ "код::"
10881104
10891105#: ../../tutorial/modules.rst:513
10901106msgid "__all__ = [\" echo\" , \" surround\" , \" reverse\" ]"
1091- msgstr ""
1107+ msgstr "__all__ = [ \" echo \" , \" surround \" , \" reverse \" ] "
10921108
10931109#: ../../tutorial/modules.rst:515
10941110msgid ""
10951111"This would mean that ``from sound.effects import *`` would import the three "
10961112"named submodules of the :mod:`!sound.effects` package."
10971113msgstr ""
1114+ "Это будет означать, что ``from sound.effects import *`` импортирует три "
1115+ "указанных подмодуля пакета :mod:`!sound.effects`."
10981116
10991117#: ../../tutorial/modules.rst:518
11001118msgid ""
@@ -1105,6 +1123,12 @@ msgid ""
11051123"the ``reverse`` submodule, because it is shadowed by the locally defined "
11061124"``reverse`` function::"
11071125msgstr ""
1126+ "Имейте в виду, что подмодули могут быть скрыты локально определёнными "
1127+ "именами. Например, если вы добавили функцию ``reverse`` в файл "
1128+ ":file:`sound/effects/__init__.py`, то ``from sound.effects import *`` будет "
1129+ "импортировать только два подмодуля — ``echo`` и ``surround`` — но **не** "
1130+ "подмодуль ``reverse``, потому что его скрывает локально определённая функция"
1131+ " ``reverse``::"
11081132
11091133#: ../../tutorial/modules.rst:525
11101134msgid ""
@@ -1117,6 +1141,14 @@ msgid ""
11171141"def reverse(msg: str): # <-- this name shadows the 'reverse.py' submodule\n"
11181142" return msg[::-1] # in the case of a 'from sound.effects import *'"
11191143msgstr ""
1144+ "__all__ = [\n"
1145+ " \" echo\" , # ссылается на файл 'echo.py'\n"
1146+ " \" surround\" , # ссылается на файл 'surround.py'\n"
1147+ " \" reverse\" , # !!! теперь ссылается на функцию 'reverse'!!!\n"
1148+ "]\n"
1149+ "\n"
1150+ "def reverse(msg: str): # <-- это имя скрывает подмодуль 'reverse.py'\n"
1151+ " return msg[::-1] # в случае 'from sound.effects import *'"
11201152
11211153#: ../../tutorial/modules.rst:534
11221154msgid ""
@@ -1130,13 +1162,25 @@ msgid ""
11301162"package that were explicitly loaded by previous :keyword:`import` "
11311163"statements. Consider this code::"
11321164msgstr ""
1165+ "Если ``__all__`` не определён, инструкция ``from sound.effects import *`` "
1166+ "*не* импортирует все подмодули из пакета :mod:`!sound.effects` в текущее "
1167+ "пространство имён; она только гарантирует, что пакет :mod:`!sound.effects` "
1168+ "был импортирован (возможно, запуская любой код инициализации из "
1169+ ":file:`__init__.py`), а затем импортирует имена, определённые в пакете. Это "
1170+ "включает любые имена (и явно загруженные подмодули), определённые в "
1171+ ":file:`__init__.py`. Это также включает любые подмодули пакета, которые были"
1172+ " явно загружены предыдущими инструкциями :keyword:`import`. Рассмотрим этот "
1173+ "код::"
11331174
11341175#: ../../tutorial/modules.rst:543
11351176msgid ""
11361177"import sound.effects.echo\n"
11371178"import sound.effects.surround\n"
11381179"from sound.effects import *"
11391180msgstr ""
1181+ "import sound.effects.echo\n"
1182+ "import sound.effects.surround\n"
1183+ "from sound.effects import *"
11401184
11411185#: ../../tutorial/modules.rst:547
11421186msgid ""
0 commit comments