Перенаправление стандартного вывода

Случается так, что некий код (возможно, не ваш) пишет в стандартный вывод какую-то нужную информацию. Ее нетрудно перехватить с помощью функции redirect_stdout из стандартного модуля contextlib. redirect_stdout является контекст менеджером (применяется совместно с with) и принимает аргументом файло-подобный объект (это может быть и дескриптор файла, и StringIO).  📎 Пример. Сохраним вывод функции help в строку…

📂 Склеиваем пути правильно

Так делать плохо: Потому что: • В разных ОС – разные разделители пути: ‘/’ для nix-подобных и macOS, ‘\\’ для Windows • В компонентах могут быть или не быть слеши – легко допустить ошибку • Набирать это даже не удобно (имхо) Самый простой способ правильного склеивания путей – os.path.join выберет нужный разделитель и расставит его…

🤭 Счастливой отладки

Python не запрещает создавать переменные и функции с именами, идентичными встроенным. Шутки ради переопределим print: Мораль такова. Во-первых, нужно быть внимательным, когда даешь имена своим переменным и функциям, чтобы случайно не перекрыть встроенные имена, что может нарушить работу программы. Хорошая IDE вас, конечно, предупредит о перекрытии имен. Во-вторых, это иногда применимо для отладки или тестирования.…

​​🔄 Визуализация графа ссылок

В продолжение вчерашней темы, покажу, как можно визуализировать граф ссылок объектов в Python. Возможно, кому-то это поможет решить сложные моменты с использованием памяти и с организацией нетривиальных структур данных. 0) Для рисования графов понадобится graphviz Например, на MacOS вы можете установить его через Homebrew: 1) Установим библиотеку objgraph: 2) Использование. Пусть у нас есть такая…