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