Just Python
10.3K subscribers
4.33K photos
11 videos
4.31K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Экономия памяти с помощью slots

Здес
ь, когда мы объявляем атрибут slots, Python использует для хранения атрибутов не словарь, а маленький массив фиксированного размера. Это серьёзно сокращает объём памяти, необходимый для каждого из экземпляров класса. У применения атрибута slots есть и некоторые недостатки. Так, пользуясь им, мы не можем объявлять новые атрибуты, мы ограничены только теми, которые имеются в slots. Кроме того, классы c атрибутом slots не могут использовать множественное наследование.

#theory // Just Python
Создание объектов, поддерживающих выражение with

Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit

#theory // Just Python
Сделать список плоским (ч.1)

Ох уж эти списки, состоящие из списков. Как бы их сделать попроще, выстроить в один ряд? Для этого тоже есть решение.

В третьей строке код проверяет, не является ли элемент списком. Если да, то использует метод extend() для расширения этим элементом итогового списка.

#theory // Just Python
%dhist

Это очень полезная магическая команда; она печатает все каталоги, которые мы посетили в текущем сеансе. Каждый раз, когда выполняется команда %cd, она обновляется в переменной _dh.

#theory // Just Python
difference_update()

Метод differenceupdate() позволяет получить набор элементов, которые присутствуют в первом множестве и не являются общими для обоих. Это означает, что differenceupdate() удаляет элементы, существующие в обоих множествах. Он не возвращает новый set, а просто удаляет общие элементы из первого множества.

#theory // Just Python
insert()

Команда insert() добавляет элемент в указанное место в объекте списка.

#theory // Just Python
Ребята из PRODHERO clck.ru/3Rbhbu делают футболки и худи для тех, кто каждый день коммитит, ревьюит и релизит.

В первой коллекции всё строго по ТЗ:
— ткани, которые не линяют и не оставляют артефакты на другой одежде;
— укреплённые горловины и манжеты для потных каток;
— шелкография, которая продержится дольше, чем любой джун на стажировке.

Одежда PRODHERO рассчитана на реальную активную жизнь айтишника: созвоны сидя, стендапы лёжа, митапы из кофепоинта и променады в офис.

Пора брать: clck.ru/3Rbhbu
Доступ к файловой системе компьютера со смартфона

Вы можете получить доступ к вашей файловой системе, запустив файловый сервер на вашем компьютере. Данная команда запускает файловый сервер, к которому можно получить доступ в той же сети. Чтобы получить доступ к своим файлам на мобильном устройстве, просто подключитесь к той же сети (Wi-Fi или воспользуйтесь точкой доступа телефона на ноутбуке).

#theory // Just Python
Разделение списка на «N» групп

Пользователи могут использовать функцию iter() в качестве итератора над последовательностью. В коде мы использовали «[iter(LIST_1)] * 2», который произвел разные группы, содержащие два элемента списка «LIST_1 []». То есть списки длины 2 будут сгенерированы с использованием элементов из первого списка.

#theory // Just Python
Отладка программы в командной строке

Если вы — из тех, кто не хочет пользоваться IDE и пишет код в Vim или Emacs, тогда вы, возможно, попадали в ситуацию, когда вам пригодился бы отладчик, вроде тех, что есть в IDE. И знаете что? У вас такой отладчик уже есть. Для того чтобы им воспользоваться, достаточно запустить программу с помощью конструкции вида python3.8 -i. Флаг -i позволяет, после завершения программы, запустить интерактивную оболочку. С её помощью можно исследовать переменные и вызывать функции.

#theory // Just Python
Транспонирование матриц

В Python пользователь может реализовать матрицу как вложенный список, что означает список внутри списка. Каждый элемент списка рассматривается как строка матрицы.

#theory // Just Python
По данным McKinsey, генеративный AI экономит до 30% рабочего времени. Проблема в том, что лидеры рынка меняются каждые пару месяцев — и вместе с этим растёт количество вкладок, аккаунтов и подписок.

MetaMind решает это: все основные нейросети для текста и изображений собраны в одном телеграм-боте.

Можно переключаться между моделями и сравнивать результаты, не выходя из чата прямо по ссылке.
Метод __init__

Метод init вызывается после того, как инстанцирован объект класса. Этот метод полезен для выполнения любой запланированной вами инициализации. Метод init аналогичен конструктору в C++, C# и Java.

#theory // Just Python
Создание объектов, поддерживающих выражение with

Этот способ легче предыдущего. Здесь протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.

#theory // Just Python
Объявление нескольких конструкторов в классе

В подобной ситуации вы, вместо использования методов класса, можете склониться к тому, чтобы поместить всю логику альтернативных конструкторов в init и решить задачу с использованием *args, **kwargs и множества выражений if. В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут я порекомендовал бы поместить минимум логики в init и выполнить все операции в отдельных методах/конструкторах. При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.

#theory // Just Python
Управление тем, что может быть импортировано из модуля, а что — нет

Тут будет экспортирована будет лишь функция bar. А если оставить атрибут all пустым, то из модуля не будет экспортироваться вообще ничего. При попытке импорта чего-либо из такого модуля будет выдана ошибка AttributeError.

#theory // Just Python
Очистка входных строковых данных

Задача очистки данных, вводимых пользователем, актуальна практически для любой программы.

Здесь можно видеть, как пробельные символы "n" и "t" заменяются на обычные пробелы, и как символ "r" удаляется из строки полностью.

Это — простой пример, но мы можем его расширить, создавая большие таблицы переназначения символов с использованием пакета unicodedata и его функции combining().

Такой подход позволяет убирать из строк всё то, что там не нужно.

#theory // Just Python
Тип данных SET

Тип данных «set» — это своего рода коллекция. Она стала частью Python, начиная с версии 2.4. Множество содержит неупорядоченную коллекцию уникальных и неизменяемых объектов. Это один из типов данных Python, реализующих множества из мира математики. Множества, в отличие от списков или кортежей, не могут содержать дублей.

Если вы хотите создать множество, просто используйте встроенную функцию set() с последовательностью или другими итерируемыми объектами в качестве аргументов.

#theory // Just Python