Я обнаружил, что во многих ресурсах «видимость» и «пространства имен» используются взаимозаменяемо, что немного сбивает с толку, поскольку они означают разные вещи.
- Область действия определяет область кода, в которой доступно имя.
- Правило LEGB определяет способ поиска имен.
- Пространство имен - это место, где вы ищите имена.
Тогда я читаю:
- «имена привязываются к пространству имен в соответствии с тем, где они назначены ...» (что, я считаю, относится к области действия в лексической области видимости).
- msgstr "функции добавляют дополнительный слой пространства имен в ваши программы" [ ref. ] (они не добавляют дополнительную локальную область?)
- «все имена, назначенные в определении функции, помещаются в локальную область (пространство имен, связанное с вызовом функции)».
- «глобальная область действия, то есть пространство имен, в котором находятся переменные, созданные (назначенные) на верхнем уровне файла модуля».
* все цитаты взяты из изучения Python 5-е издание ch17
Являются ли пространства имен в Python способом реализации областей? Это одно и то же? Кто-нибудь может просветить меня?