Вывод всех объявленных переменных в Python: решение
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы просмотреть все локальные переменные, используйте модуль pprint
:
from pprint import pprint
pprint(locals()) # Выводит словарь с локальными переменными: просто и наглядно
Чтобы обратиться к глобальным переменным, используйте globals()
. Их можно отфильтровать, исключив имена, начинающиеся на _
. Помните, что pprint()
— это ваш надежный инструмент для обеспечения четкого вывода.
Если вы работаете в среде IPython или Jupyter Notebook, команда %whos
предоставит вам детализированный список переменных, а %who
покажет их имена. Для сохранения переменных между сессиями используйте команду %store
. Это похоже на сохранение игрового процесса перед большим боем.
Что это за типы у моих переменных?
Вы можете узнать типы переменных так:
for name in vars():
if not name.startswith('_'):
print(f"{name}: {type(eval(name))}") # Теперь вы знаете типы переменных
Здесь с помощью eval()
определяется тип каждой переменной, но помните о потенциальном риске использования eval()
.
Полезные рекомендации по исследованию переменных
Хранение переменных вне времени выполнения скрипта
Если вам нужно сохранить переменные на время, превышающее время выполнения скрипта, используйте модуль pickle
вместе с командой %store
в IPython:
import pickle
# Сохранение переменной 'data' в файл:
with open('data.pickle', 'wb') as f:
pickle.dump(data, f) # Переменная сохранена в файл.
# Загрузка 'data' из файла при повторном использовании:
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
Интроспекция состояния при выполнении вычислительных задач
IPython и Jupyter Notebooks позволяют более глубоко понять состояние ваших переменных благодаря команде %store
. Дополнительные библиотеки могут расширить возможности управления состоянием переменных.
Расширенная инспекция объектов
Чтобы получить более полную информацию об объектах, применяйте следующий подход:
class MyClass:
def __init__(self):
self.x = 10
self.y = 20
obj = MyClass()
pprint(vars(obj)) # Выводит информацию о переменных объекта
Функция vars()
отображает содержимое атрибутов объекта.
Магические команды в Jupyter Notebooks
В Jupyter Notebooks доступны магические команды, такие как %who
и %whos
, которые позволяют увидеть все текущие переменные. При необходимости вы всегда можете обратиться к документации IPython.
Визуализация
Представьте ваш скрипт на Python как кухню, где переменные – это ингредиенты, а dir()
— содержимое ваших шкафов. Давайте откроем двери:
for ingredient in dir():
if not ingredient.startswith('_'):
print(ingredient) # Полный список доступных "ингредиентов"
Вот что у нас есть на полках:
| Ингредиент | Тип |
|------------|-------|
| мука | 🌾 |
| яйца | 🥚 |
| сахар | 🍚 |
| масло | 🧈 |
Главное: функциия dir()
помогает вам увидеть, что доступно в вашей "кухне".
Быстро, быстрее, наибыстрейший
Исключаем лишнее
Если вы хотите исключить из рассмотрения специальные методы и атрибуты (те, которые начинаются и заканчиваются двойным подчёркиванием), используйте следующий подход:
{key: value for key, value in globals().items() if not (key.startswith('__') and key.endswith('__'))} # Только то, что нам нужно, без лишних подчеркиваний
Проверяем значение переменных
Хотите посмотреть, что содержат в себе ваши переменные? Вызовите функцию vars().values()
, но будьте готовы к большому количеству информации:
for value in vars().values():
print(value) # Ожидайте обилия информации
Заглядываем в модули
Хотите узнать всё об определенном модуле или классе? Используйте функции dir()
и vars()
для поиска:
import math
pprint(dir(math)) # Все секреты модуля math
Полезные материалы
- Built-in Functions — Python 3.12.1 documentation
- Python Debugging With Pdb – Real Python
- Project Jupyter | Home
- Python locals() (With Examples)
- Python Scope & the LEGB Rule: Resolving Names in Your Code – Real Python
- dir() function in Python – GeeksforGeeks
- Online Python Tutor – visualize, debug, get AI help for Python, Java, C, C++, and JavaScript