python что возвращает функция locals
Использование функции locals() в Python
Что такое таблица символов?
Таблица символов — это таблица, содержащая информацию о различных символах. Здесь символ может означать что угодно — имя переменной, ключевое слово, имя функции и т. д.
Они представляют собой все имена всех переменных, классов и функций в вашей программе.
Как правило, таблица символов состоит не только из имен этих объектов, но и другой полезной информации, такой как тип объекта, область действия и т. д.
Для программы на Python существует 2 типа таблиц символов:
Это две таблицы символов, определенные на основе глобальной и локальной (текущей) области.
Когда мы обращаемся к локальной таблице символов, мы обращаемся ко всей информации в нашей текущей области, когда интерпретатор выполняет наш код построчно.
Что именно делает функция locals()?
Это, естественно, означает, что вывод locals() будет словарем всех имен переменных и атрибутов, области видимости и т. д.
Например, если у вас есть файл с именем main.py Давайте поместим locals() в качестве нашего единственного оператора и посмотрим, что произойдет. Мы должны получить всю связанную информацию в main области видимости (в данном случае она такая же, как и в глобальной области видимости).
Что ж, мы могли видеть некоторые атрибуты main модуля (Global Scope), который также включает некоторые детали пакета!
Вызов locals() внутри функции
Поскольку локальная область видимости не является частью пакета, информация о пакете отсутствует и содержит только переменные, связанные с функцией, плюс аргументы.
Также обратите внимание, что глобальная переменная global_var является частью глобальной таблицы символов и в результате отсутствует в локальной таблице символов!
Вызов locals() внутри класса
Это похоже на вызов из функции, но будет содержать все методы класса и соответствующие атрибуты.
Давайте быстро взглянем на пример.
Здесь мы будем вызывать locals() внутри класса после того, как определим все методы класса. Таким образом, эти методы класса также должны быть частью локальной таблицы символов.
Когда мы вызываем locals() из тела класса, мы получаем имя модуля, имя класса и переменные класса. В глобальной таблице символов ничего подобного, как и ожидалось, нет.
Вывод
Функция locals() в Python
Функция locals() в Python возвращает словарь, представляющий текущую локальную таблицу символов.
Программа Python хранит информацию о программе в таблицах символов. Есть два типа таблиц символов:
Таблица символов в Python содержит подробную информацию об именах переменных, методах, классах и т.д.
Функция Python locals() не принимает никаких аргументов. Посмотрим словарь, возвращаемый функцией locals().
Если вы выполните print (globals()), вы получите тот же результат. Однако результат может немного отличаться в зависимости от вашей установки Python.
Так в чем же разница между locals() и globals()? Нет никакой разницы, потому что мы выполняем locals() и globals() в самом текущем модуле. Разница будет присутствовать, когда мы вызовем эти функции внутри метода или класса.
locals() внутри метода
Давайте посмотрим, что будет на выходе, когда locals() и globals() вызываются внутри тела функции.
Итак, ясно, что locals() внутри функции возвращает локальную переменную, обратите внимание, что глобальные переменные являются частью глобального словаря таблицы символов.
locals() внутри класса
Давайте посмотрим на результат, когда locals() вызывается внутри тела класса.
При вызове внутри тела класса locals() содержит имя модуля, имя класса и переменные класса.
Заключение
Функция Python locals() в основном используется для отладки. Мы можем проверить, какие переменные присутствуют в локальной области и их значения. Мы также можем изменить их значения, поскольку это словарь, хотя это не рекомендуется.
Подробно о locals() и globals() в Python
Метод locals() обновляет и возвращает словарь текущей локальной таблицы символов.
Таблица символов — это структура данных, поддерживаемая компилятором, которая содержит всю необходимую информацию о программе.
К ним относятся имена переменных, методы, классы и т. д.
В основном есть два вида таблиц символов.
В глобальной таблице символов хранится вся информация, относящаяся к глобальной области действия программы, доступ к ней в Python осуществляется с помощью метода globals().
Глобальная область видимости содержит все функции и переменные, которые не связаны ни с каким классом или функцией.
Точно так же в локальной таблице символов хранится вся информация, относящаяся к локальной области действия программы, и доступ к ней в Python осуществляется с помощью метода locals().
Локальная область видимости может находиться внутри функции, внутри класса и т. д.
Синтаксис метода locals():
Метод locals() не принимает никаких параметров.
Метод locals() обновляет и возвращает словарь, связанный с текущей локальной таблицей символов.
Как locals() работает в Python?
Примечание: таблица символов globals() и locals() для глобальной среды одинакова.
Пример как locals() работает внутри локальной области?
Обновление значений словаря
В отличие от словаря globals(), который отражает изменение фактической глобальной таблицы, словарь locals() не может изменять информацию внутри таблицы locals.
Метод globals() возвращает словарь текущей глобальной таблицы символов.
Словарь таблицы глобальных переменных — это словарь текущего модуля (внутри функции это модуль, в котором он определен, а не модуль, в котором он вызывается).
Синтаксис метода globals():
Метод globals() не принимает никаких параметров и возвращает словарь текущей глобальной таблицы символов.
Как метод globals() работает в Python?
Вывод показывает все глобальные переменные и другие символы для текущей программы.
Как изменить глобальную переменную с помощью global()?
Использование функции Python Locals ()
Сегодня мы будем смотреть на использование функции Python Locals (). Это еще одна полезная функция, которая весьма полезна для отладки вашей программы.
Сегодня мы будем смотреть на использование Python Местные жители () функция. Это еще одна полезная функция, которая весьма полезна для отладки вашей программы.
Функция Locals () дает нам текущую локальную таблицу символов, как словарь.
Теперь, если вы не уверены в том, что именно локальная таблица символов сохраняет чтение. Пойдем шаг за шагом, начиная с определения таблицы символов.
Что такое символ стол?
Ну, таблица символов – это таблица, состоящая из информации относительно разных символов. Здесь символ может означать что-либо – имя переменной, ключевое слово, имя функции и т. Д.
Они представляют все имена всех переменных, классов и функций в вашей программе.
Как правило, таблица символов не только состоит из названий этих объектов, но и другая полезная информация, как и тип объекта, объем и т. Д.
Теперь, когда вы знаете, что означает символ таблицы, давайте приходим к классам таблиц символов.
Есть 2 типа таблиц символов, для программы Python:
Это две таблицы символов, определенные на основе глобального объема и локального (текущего) объема.
Когда мы ссылаемся на локальный символ таблицы, мы ссылаемся на всю информацию в нашем Текущий Область применения, когда интерпретатор выполняет нашу линию кода по линии.
Что именно делает функцию Python Locals ()?
Теперь, что за Местные жители () Функция делает, это просто вставить информацию о локальной таблице символов на консоли, на этой области, где Местные жители () был назван!
Так что это естественно означает, что выпуск Python Местные жители () Будет словарь всех переменных имен и атрибутов, объем и т. Д.
Например, если у вас есть файл под названием main.py Отказ Давайте поставить Местные жители () Как наше единственное утверждение, и посмотрите, что происходит. Мы должны получить всю связанную информацию в Главная Область (в этом случае это так же, как глобальный объем)
Ну, мы могли видеть некоторые атрибуты Главная Модуль (глобальный объем), который также включает в себя некоторые детали пакета!
Как некоторые из вас могут сразу реализовать, это так же, как глобал () Здесь, поскольку оба относятся к тому же глобальному объему.
Вызов местных жителей () от локальной области
Теперь давайте рассмотрим звонить Местные жители () Внутри местного охвата, от функции.
Вызов местных жителей () внутри функции
Здесь есть заметное изменение изнутри Веселье (A, B) Отказ Здесь локальная таблица символов состоит только из имени, связанных с этой функцией.
Поскольку локальный объем не является частью пакета, нет информации пакета, и это содержит только переменные, связанные с функцией, а также аргументы.
Также обратите внимание, что глобальная переменная Global_var является частью таблицы глобального символа и отсутствует в локальной таблице символов в результате!
Вызов местных жителей () внутри класса
Это похоже на вызов из функции, но это будет содержать все методы класса и соответствующие атрибуты.
Давайте быстро посмотрим, используя пример.
Здесь мы будем звонить Местные жители () Внутри класса после определения всех методов классов. Таким образом, эти методы класса также должны быть частью локальной таблицы символов.
Действительно, как вы можете видеть, Местные жители () Дает соответствующие методы!
Когда мы называем Местные жители () Из-за корпуса класса мы получим имя модуля, имя класса и переменные классов.
Таблица глобального символа не имеет ничего особенного, как и ожидалось.
Заключение
В этой статье мы узнали, как мы можем получить информацию от местного объема, используя Местные жители () функция. Это возвращает словарь всех полезных имен и атрибутов из локальной таблицы символов и очень полезен для отладки.
globals, locals, vars, dir – инспектируем переменные
Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций и классов (грубо говоря без отступов слева). Локальные переменные наоборот определены внутри своих зон видимости, ограниченных классами и функциями.
Функция globals() выдает словарь глобальных переменных (ключ – имя переменной). Функция locals() возвращает словарь только локальных переменных. Пример:
Еще важно знать, что в список переменных входят не только простые переменные, которые вы определяете через знак присваивания, но и функции, классы и импортированные модули!
Через словари из locals() и globals() переменные можно не только читать, но и создавать, перезаписывать и удалять:
В глобальном контексте все три функции возвращают одно и тоже – глобальные переменные. Проверьте:
Без параметров dir() возвращает список имен переменных. В глобальном контексте – глобальных переменных, в локальном – список имен локальных переменных.
Все рассмотренные выше функции являются встроенными и не требуют импортов.
В отличие он некоторых других языков в Python блоки типа for, if, while, with не создают областей видимости (scope) для переменных, то есть переменная внутри и снаружи блока будет одна и та же:
Частая ошибка – затирание внешней переменной в цикле for:
Зоны видимости отделяются только функциями, классами и модулями. Здесь все переменные x – разные:
Самая широкая зона видимости называется builtin. В нее попадают все имена, известные интерпретатору в данный момент, включая вещи импортированные из других модулей.
Казалось бы мы затерли pi, но мы затерли его лишь в глобальной области видимости. Повторно импортируя pi, мы получаем старую переменную с тем же адресом, иными словами мы достаем ее из builtin области в global.
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈