Введение

Когда программа становится большой, чтение кода становится сложной задачей. Даже некоторые простые задачи будут трудными. Например:

  • Как быстро посмотреть все имена и значения переменных для текущего скрипта?
  • Как проверить все имена переменных и значения большой функции или класса?
  • Как получить список допустимых атрибутов конкретного объекта?

Конечно, мы можем просматривать код строку за строкой и запоминать имена или записывать их в газетах. Однако это совсем не Pythonic.

Читать код сложнее, чем писать. — Джоэл Спольски

Чтобы облегчить нашу жизнь, Python предоставляет четыре полезные встроенные функции, помогающие нам удобно отображать имена переменных и значения определенной области действия. В этом посте мы рассмотрим эти четыре способа заставить нас наслаждаться чтением кода.

Функция 1: глобальные()

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

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

>>> globals()
{'__name__': '__main__', '__doc__': None, ...}

(Некоторые примеры выходных данных этой записи сокращены ..., чтобы сделать их более четкими и читабельными.)

Если мы добавим одну переменную:

>>> Master = "Yang"
>>> globals
{'__name__': '__main__', '__doc__': None, ... ,'Master': 'Yang'}

Поскольку функция globals() просто возвращает dict. Мы можем манипулировать этим dict, чтобы получить некоторые конкретные данные, которые нас интересуют:

>>> [n for n in globals() if not n.startswith('__')]
['sys', 'Master']

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

Функция 2: местные жители ()

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

Кстати, если мы вызовем locals() в глобальной области видимости, результат будет идентичен globals().

>>> globals() is locals()
True

Функция 3: варс()

Функция vars() вернет __dict__, который представляет собой словарь, используемый для хранения атрибутов объекта. Его результат такой же, как при прямом вызове __dict__.

Пример использования функции vars()

Не обязательно, чтобы все объекты имели __dict__, поэтому мы можем использовать метод vars() только в части объектов.

Как показано в приведенном выше примере, объект типа int не содержит __dict__, поэтому TypeError будет поднят, если мы используем для него vars().

Функция 4: директор()

Функция dir() помогает нам продемонстрировать список имен в соответствующей области.

На самом деле метод dir вызывает __dir__() внутри.

Как показано выше, если мы изменим принцип работы __dir__, результат dir() также изменится.

Вывод

Эти четыре встроенные функции являются полезными инструментами для отображения имен и значений. Их общий сценарий использования используется в консоли Python для изучения сценария или объекта, когда мы читаем программы.