Найти тему

Пространство имен

Пространство имен

Встроенное пространство имен включает в себя имена каких-либо встроенных функций. Локальное представляет собой имена, которые мы используем внутри каких-либо функций, которые мы используем и создаем самостоятельно. Глобальное пространство имен включает в себя все, что есть в нашей программе, исключая лишь локальное пространство.

Рассмотрим на примере. У нас есть переменная «a» и переменная «b» (Рис.1). Сейчас они находятся в глобальном пространстве имен. Мы можем легко к ним обращаться, запуская программу.Пространство имен – это своего рода система, которая отвечает за то, чтобы все имена в программе были уникальными и могли использоваться без каких-либо проблем или конфликтов.

Существует несколько видов пространства имен:Локальное пространство имен
Глобальное пространство имен
Встроенное пространство имен

(Рис.1)

Но представим ситуацию, когда мы создаем какую-либо функцию. Например, назовем ее «printer», она будет создавать переменные «с» и «d» и выводить значение этих переменных (Рис.2).

-2

(Рис.2)

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

Если мы запустим программу, то увидим, что переменные «c» и «d» тоже выведены на экран (Рис.3).

-3

(Рис.3)

Часть, которая находится внутри функции, и является локальным пространством имен (Рис.4). Переменные «c» и «d» существуют до тех пор, пока функция не завершит свою работу.

-4

(Рис.4)

Если мы попытаемся обратиться к этим элементам в нашей основной программе, то сразу получим ошибку, говорящую о том, что таких имен у нас нет (Рис.5). Таким образом, эти имена мы можем использовать лишь внутри функции.

-5

(Рис.5)

В свою очередь есть такая особенность, что к глобальному пространству имен мы можем обращаться напрямую из локального (Рис.6). Сделаем для себя пояснение, что «c» и «d» у нас local, а «a» и «b» это global.

-6

(Рис.6)

То есть внутри локального пространства имен функции «printer» мы обратились к значениям из глобального пространства.

А теперь давайте попробуем создать переменную «a» со значением «Str» и переменную «b» со значением «Str 2» внутри функции. Запускаем (Рис.7).

-7

(Рис.7)

В итоге мы получаем значения не глобальных переменных «a» и «b», а переменных, которые были объявлены в теле функции «printer».

Тогда что будет, если мы обратимся к переменным «a» и «b» снова, но уже после вызова функции? Можно было предположить, что после переопределения этих переменных нам выдаст их значения «Str» и «Str 2», но как мы видим, значения вывелись из глобального пространства (Рис.8). Все потому, что те переменные были созданы внутри функции, а значит после ее завершения они не имеют силы. Получается, что несмотря на то, что имена переменных одинаковы, они находятся в разных пространствах имен и, по сути, уникальны.

-8

(Рис.8)

Но если нам необходимо взаимодействовать с переменными из глобального пространства внутри локального пространства имен функции «printer»? В таком случае мы пропишем в самом начале функции, что используем глобальные переменные «a» и «b» (Рис.9).

-9

(Рис.9)

При запуске программы мы видим, что теперь даже после завершения функции используются значения, присвоенные переменным внутри нее. Таким образом во время вызова функции мы переопределили значения переменных «a» и «b» из глобального пространства имен.