Python академия
7.72K subscribers
2.34K photos
6 videos
269 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
ООП: композиция

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

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

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

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

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

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍2
Как удалить пробелы из строки с помощью replace()

Как упоминалось выше, функция replace() – это одна из наиболее часто используемых строковых функций в Python. С ее помощью можно заменить определенный символ, слово или фразу в указанной строке. Синтаксис функции replace()

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

Для работы с пакетами в Python есть специальная утилита pip — устанавливается она сразу вместе с интерпретатором.

Установить или удалить пакет можно через команды install и uninstall. После них нужно перечислить необходимые пакеты через пробел.

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

А с помощью show можно посмотреть информацию о конкретном пакете: название, версию, описание, автора, лицензию и другое.

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

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍3
Как вывести переменную и строку в Python, разделив их запятыми

Вы можете указать строку и переменную в качестве аргументов функции print(), просто перечислив их через запятую.

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍4
Как использовать функцию print() в Python

Чтобы вывести что-либо на экран, мы используем функцию print(). Пишем ключевое слово print, за которым следует пара круглых скобок (). Внутри этих скобок мы помещаем то, что хотим распечатать.

Подписывайтесь на канал 👉@pythonofff
😁6👍3🤔2🤯2😭1
Библиотека Feather

Feather — это библиотека для эффективного чтения и записи таблиц данных в двоичный формат. Она использует формат Apache Arrow для сериализации данных, что позволяет быстро читать и записывать данные без потери информации.

В этом примере мы использовали две основные функции библиотеки:
— feather.write_dataframe(): записывает таблицу данных в файл формата Feather.
— feather.read_dataframe(): читает таблицу данных из файла формата Feather.

Feather позволяет быстро и эффективно обмениваться данными между Python и R, а также обеспечивает быстрое чтение и запись таблиц данных на диск.

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

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍3
Использование комплексных чисел в 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
Специальные переменные

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

Подписывайтесь на канал 👉@pythonofff
2
Decimal и Fraction

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

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

В данной связи, для идеальных вычислений лучше использовать класс Fraction, т.к. он работает с числами в виде рациональных дробей.

Подписывайтесь на канал 👉@pythonofff
2👍1
Используйте настраиваемый User-Agent

Механизм защиты от скрапинга – User-Agent. UA – это заголовок, который браузеры отправляют в запросах для идентификации. Обычно он представляет собой длинную строку, в которой объявляется имя браузера, версия, платформа и многое другое.

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

Для вычисления размера объекта мы можем использовать функцию getsizeof(object[, default]) из модуля sys. Так как в python все по сути является объектами, то и вычислить размер в памяти мы можем у любого такого объекта.

И хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.

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

Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора.

Подписывайтесь на канал 👉@pythonofff
Необходимо чередовать IP-адреса

Вы можете менять IP-адрес каждые несколько секунд или для каждого запроса. Целевой сервер не может идентифицировать ваши запросы и не блокирует эти IP-адреса. Вы можете создать огромный список прокси и выбирать по одному для каждого запроса случайным образом. Или используйте вращающийся прокси, который сделает это за вас. После этого изменения шансы на правильную работу скрапера резко возрастают.

Подписывайтесь на канал 👉@pythonofff
Динамическая замена class

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

Первый принимаемый аргумент является именем класса и становится атрибутом __name__; второй аргумент является кортежем с перечисленными базовыми типами и становится атрибутом __base__; словарь будет являться телом класса и станет атрибутом __dict__.

Подписывайтесь на канал 👉@pythonofff
3