Введение
Когда программа становится большой, чтение кода становится сложной задачей. Даже некоторые простые задачи будут трудными. Например:
- Как быстро посмотреть все имена и значения переменных для текущего скрипта?
- Как проверить все имена переменных и значения большой функции или класса?
- Как получить список допустимых атрибутов конкретного объекта?
Конечно, мы можем просматривать код строку за строкой и запоминать имена или записывать их в газетах. Однако это совсем не 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 для изучения сценария или объекта, когда мы читаем программы.