Python академия
7.72K subscribers
2.39K photos
5 videos
269 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
__repr__

Метод repr() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод str() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.

Подписывайтесь на канал 👉@pythonofff
👍1
Генерируем QR-код

Простой, но удобный и полезный пакет для создания QR-кодов. Для отрисовки картинок используется Pillow, так что убедитесь, что он у вас установлен.

Чтобы создать объект картинки с QR-кодом необходимо вызвать метод make() и передать данные в качестве аргумента. А для сохранения нужно применить метод save() к полученному объекту.

Подписывайтесь на канал 👉@pythonofff
1
Генераторы списков очень классная особенность

Ещё одна классная особенность Python, дающая возможность быстро создавать списки. Такие выражения позволяют легко писать чистый код, который читается почти как естественный язык

Подписывайтесь на канал 👉@pythonofff
Получаем календарь

В модуле calendar есть функция month(), которая вернет календарь указанного месяца в виде строки, как показано в примере. А функция calendar() выдаст целый год.

Если строки строки не устраивают, то в модуле есть много методов для получения самых разных итераторов. А еще там можно даже получить календарь в виде HTML.

Кстати, модуль является встроенным, отдельно его устанавливать не нужно.

Подписывайтесь на канал 👉@pythonofff
🔥5
Как работают арифметические операции

Если кто-то еще не знает, то в Python всё является объектами: числа в том числе. И при любых операциях, включая арифметические, у объектов вызываются магические методы.

Например, при сложении у объекта первого слагаемого вызывается соответствующий магический метод и в качестве аргумента передается объект второго слагаемого.

Еще стоит отметить, что у float поддерживается деление с остатком, то есть метод __div__. А int имеет только деление с округлением, реализованное в методе __floordiv__.

Подписывайтесь на канал 👉@pythonofff
👍3
Обмен значений переменных

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

Подписывайтесь на канал 👉@pythonofff
👍21
Создаем контекстный менеджер с помощью декоратора

Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов: enter и exit. Но такой подход может показаться слегка сложным.

Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.

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

Подписывайтесь на канал 👉@pythonofff
👍2
Неизвестное количество аргументов через *arguments

Если функция может принимать любое количество аргументов, то перед названием параметра добавьте *

Подписывайтесь на канал 👉@pythonofff
👍4
Редирект вывода программы

В contextlib есть еще один прикольный контекстный менеджер — redirect_stdout, позволяющий перенаправить стандартный вывод программы.

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

Таким образом, данные из print() в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout.

Убедится в этом можем, открыв файл заново и прочитав оттуда данные.

Подписывайтесь на канал 👉@pythonofff
👍2
ООП: композиция

Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.

Как правило, в этом случае объект одного из классов (в примере выше это Salary) является полем другого (Employee). Сложного здесь, как вы видите, ничего нет.

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

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

Подписывайтесь на канал 👉@pythonofff
👍3
Распечатывание ежемесячного календаря

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

Подписывайтесь на канал 👉@pythonofff
3👍3
Считаем ссылки на объект

В Python практически никогда не нужно волноваться об управлении памятью, потому что все это делается автоматически.

Счетчик ссылок — это то, что помогает при проверке того, следует ли выполнять сборку мусора или нет. Сборщик мусора удаляет объект из памяти в случае, если на него ничего не ссылается.

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

В примере выше продемонстрирован простой способ, как можно посмотреть количество ссылок у объекта.

Подписывайтесь на канал 👉@pythonofff
2
Итерация без итератора

Чтобы лучше понять преимущества итераторов, давайте кратко рассмотрим итерацию без итераторов. Примером итерации без итератора является классический цикл for в стиле C. Этот стиль существует не только в C, но и, например, в C++, go и JavaScript.

Подписывайтесь на канал 👉@pythonofff
👍1
Генераторные выражения и списковые включения

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

Если вывести переменные, то видим, что значением переменной l является список, а переменная g хранит в себе объект генератора. И здесь возникает вопрос, что же использовать.

Нужен результат, например в виде списка, прямо сейчас для дальнейшего выполнения программы — используйте генераторы коллекций.

А если же значения понадобятся еще не скоро или неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему.

Подписывайтесь на канал 👉@pythonofff
👍2
Работаем с атрибутами объектов

Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции: getattr, setattr, delattr и hasattr.

По названиям можно понять, что первые три отвечают за получение, установку и удаление атрибута. А последний проверяет, существует ли атрибут с указанным названием у объекта или нет.

Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В setattr также нужно передать новое значение для атрибута.

На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.

Подписывайтесь на канал 👉@pythonofff
3👍2
Итерируемый счетчик

Еще один классный итератор из itertools — это count, который генерирует бесконечную последовательность чисел.

В аргументах можно задать значения start и step: первый отвечает за начальное значение, а второе за шаг, как и в range.

Обычно count редко используют с циклом for. Чаще можно встретить случаи с функциями типа zip или map.

Подписывайтесь на канал 👉@pythonofff
👍1
Как объединить словари в Python с помощью цикла for

Мы можем объединить два или более словарей, используя цикл for

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

Подписывайтесь на канал 👉@pythonofff
👍1
Использование комплексных чисел в Python

Никого здесь уже не удивить такими встроенными типами, как например int, float, и подобными. Но кроме них в Python существует еще один довольно интересный тип, а именно, complex.

В Python комплексные числа представлены в виде x + iy. А точнее говоря, вместо буквы i здесь используется буква j, во избежание некоторой путаницы, поскольку i чаще всего занята под циклы. Python преобразует реальные числа x и y (будь то int или float) в комплексное с помощью функции complex(x,y).

Комплексное число легко можно превратить в строку с помощью функции str или посчитать его модуль с помощью функции abs, а также для доступа к его реальной или мнимой частям можно воспользоваться методами real и imag.

Хотя complex и является встроенным типом, для более удобной работы с комплексными операциями рекомендуется импортировать модуль cmath.

Подписывайтесь на канал 👉@pythonofff
1
Специальные переменные

Одна примечательная «особая» переменная, которую вы часто можете видеть в коде Python, — это _, то есть просто символ подчеркивания. По соглашению так именуют малозначимые переменные. Откуда же берутся такие переменные? Например, иногда надо недолго хранить значение, возвращаемое функцией. В примере ниже мы сканируем строки датафрейма из библиотеки pandas

Подписывайтесь на канал 👉@pythonofff
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
💩3🤣2