Python аналог функции var_dump() из PHP: отладка кода

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Функционалу var_dump() из PHP в Python соответствуют встроенные функции pprint и vars(). Функция pprint предоставляет читаемый вывод сложных структур данных, вроде списков и словарей, а vars() полезна для просмотра атрибутов экземпляров классов.

Вот пример их использования:

Python
Скопировать код
from pprint import pprint

# Возьмем к примеру словарь
data_example = {'foo': 'bar', 'numbers': [1, 2, 3]}
pprint(data_example)  # Получаем аккуратно отформатированный вывод 

class Sample:
    x = 10

# А теперь рассмотрим экземпляр класса
sample_instance = Sample()
pprint(vars(sample_instance))  # Получаем список атрибутов экземпляра

Вывод будет следующим:

{'foo': 'bar', 'numbers': [1, 2, 3]}
{'x': 10}

Таким образом, эти инструменты позволяют наглядно представить структуру данных и атрибуты объектов, аналогично var_dump() в PHP.

Кинга Идем в IT: пошаговый план для смены профессии

Ювелирные инструменты отладки в Python: за пределами var_dump

Помимо pprint и vars(), в Python доступен ряд дополнительных решений для отладки. В частности, модуль inspect предоставляет функцию getmembers(), которая вместе с pprint позволяет углубиться в детали объектов, включая их функции, аргументы и документацию.

Демонстрация:

Python
Скопировать код
import inspect
from pprint import pprint

class MyClass:
    def __init__(self, value):
        self.value = value
    def do_something(self):
        pass

# Взглянем на экземпляр класса
my_instance = MyClass(42)
pprint(inspect.getmembers(my_instance, predicate=inspect.ismethod))

В результате будет выведен список методов и атрибутов созданного экземпляра.

Еще одним полезным инструментом отладки в Python является функция repr(). Она выполняет сериализацию объектов, создавая строковое представление, которое позже может быть использовано для воссоздания объекта.

Погружение на глубину: Продвинутые инструменты отладки в Python

Для анализа стека вызовов разработчикам может пригодиться модуль cgitb, особенно полезный в контексте веб-разработки и CGI-скриптов. cgitb предоставляет подробную информацию о локальных переменных в трассировочном отчете.

Также, можно дополнительно установить библиотеку var_dump, которая эмулирует работу исходной функции PHP:

shell
Скопировать код
pip install var_dump

После установки её можно использовать следующим образом:

Python
Скопировать код
from var_dump import var_dump

var_dump(your_variable) # Это функционал, идентичный функции var_dump из PHP!

Визуализация использования аналога var_dump в Python

Для визуализации аналога функции var_dump в Python достаточно выполнить следующие команды:

Python
Скопировать код
from pprint import pprint

# Замените 'your_variable' на проверяемую переменную.
pprint(your_variable)

Это может выглядеть так:

Содержимое переменной (your_variable):
    🔍  "Тип": "список"
    🔍  "Размер": 4
    🔍  "Элементы": [золото, бриллианты, рубины, изумруды]

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

Драконы и подземелья: Изучаем глобальные и локальные переменные

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

С функцией pprint можно получить читаемое описание текущего состояния пространства имен:

Python
Скопировать код
from pprint import pprint

pprint(globals()) # Осмотрим глобальное пространство имен
pprint(locals())  # Оценим состояние локального пространства имен

Польуясь этими функциями, можно заметно улучшить процесс отладки в Python.

Полезные материалы

  1. pprint — Красивый вывод данных — Документация Python 3.12.2 — Справочник по стандартной библиотеке Python, описывающий вывод переменных.
  2. Назначение метода repr? – Stack Overflow — Обсуждение метода __repr__ на Stack Overflow.
  3. inspect — Инспектирование живых объектов — Документация Python 3.12.2 — Определение модуля inspect в официальном руководстве Python.
  4. prettyprinter · PyPI — Усовершенствованный пакет PyPI для читаемого представления данных.
  5. GitHub – sha256/python-var-dump: Эквивалент функции var_dump из PHP для Python — Репозиторий, в котором представлен аналог var_dump для Python.
  6. json — Кодировщик и декодировщик JSON — Документация Python 3.12.2 — Инструкция к использованию JSON в Python.
  7. JSON — Описание базовых принципов и особенностей формата JSON.