Функция locals() в Python — как использовать

Python locals() — это встроенная функция, которая возвращает словарь, содержащий переменные, определенные в локальном пространстве имен.

Вызов locals() в глобальном пространстве имен аналогичен вызову globals() и возвращает словарь, представляющий глобальное пространство имен модуля. Рассмотрим как использовать функцию locals() в Python на примерах.

Руководство по Python locals()

Что такое locals() в Python?

Метод locals() в Python обновляет и возвращает словарь текущей локальной таблицы символов. Таблица символов — это поддерживаемая компилятором структура данных, содержащая всю необходимую информацию о программе. К ним относятся имена переменных, методы, классы и т. д.

Существуют в основном два вида таблиц символов.

  1. Глобальная таблица символов.
  2. Таблица локальных символов.

Глобальная таблица символов хранит всю информацию, относящуюся к глобальной области действия программы, и доступ к ней осуществляется в Python с помощью метода globals(). Глобальная область видимости содержит все функции, переменные, которые не связаны ни с каким классом или функцией.

Точно так же в таблице локальных символов хранится вся информация, относящаяся к локальной области действия программы, и доступ к ней в Python осуществляется с помощью метода locals(). Локальная область может быть внутри функции, внутри класса и т. д.

Синтаксис

См. следующий синтаксис.

Метод locals() не принимает никаких параметров. Метод locals() обновляет и возвращает словарь, связанный с текущей локальной таблицей символов. Таблица символов globals() и locals() для глобальной среды одинакова.

См. следующий пример.

В приведенном выше примере мы определили две функции. В функции collab() мы не определяли никаких переменных. Так что эта функция не содержит никакой локальной переменной.

В функции localscollab() мы определили одну локальную переменную, называемую cross. Таким образом, когда функция возвращает locals(), она будет содержать переменную cross.

См. следующий вывод.

Обновление значений словаря locals()

Теперь давайте попробуем обновить локальное значение, а затем прочитать его.

Вывод:

В отличие от словаря globals(), который отражает изменение фактической глобальной таблицы, тогда как словарь locals() может не изменять информацию внутри таблицы locals.

Получение имени файла текущей программы

Давайте напишем код, который будет возвращать текущее имя файла с помощью функции locals(). Мое текущее имя файла — app.py.

Смотрите вывод.

Внутри класса

Давайте посмотрим на результат, когда функция locals() вызывается внутри тела класса.

Вывод:

При вызове внутри тела класса locals() содержит имя модуля, имя класса и переменные класса.

Разница между locals() и globals()

Нет никакой разницы, потому что мы выполняем locals() и globals() в текущем модуле. Мы можем увидеть разницу, когда вызываем эти функции внутри метода или класса. В каком контексте и области мы используем, чтобы определить значения этих функций.

Существует также третья функция, называемая vars().

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

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python