Python Community
13.1K subscribers
1.24K photos
26 videos
15 files
713 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Генераторы и yield

В Python есть объекты, которые могут возвращать не одно значение, а несколько. Делается это за счёт оператора yield.

Когда мы используем его в функции и вызываем её, в результате получаем генератор. Получить значение из него можно с помощью функции next().

Код в функции выполняется также, как и всегда, но останавливается, когда встречает yield и ждёт следующего вызова next().

Также по генератором можно пройтись с помощью цикла for, но только один раз.

#теория
⚡️ Шаблон Снимок

Паттерн позволяет сохранять и восстанавливать прошлые состояния объектов, при этом не раскрывая подробности их реализации.

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

Класс игрока может самостоятельно собрать данные, которые необходимо сохранить и вернуть их в виде объекта Memento. Также класс игрока реализует восстановление из Memento.

#паттерны #memento
⚡️ Задачка с собеседования | #Medium

Условие:

По заданному числу найдите перестановку с наименьшим абсолютным значением (без нулей в начале числа). На вход идёт целое число и в результате тоже должно быть целое число.

Примеры:

min_permutation(0) ➞ 0
min_permutation(-20) ➞ -20
min_permutation(293940) ➞ 203499

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ VSCode в браузере

Это легковесная версия Visual Studio Code, которая отлично работает в браузере. Найти её можно на этом сайте.

Он поддерживает почти все функции десктопного редактора (подсветка, автодополнение). Также может работать с git и поддерживает расширения, но с небольшими ограничениями.

К тому же, IDE прекрасно работает на планшете, так что вы сможете быстро дописать код, пока куда-то едете. Подробнее обо всём в блоге (англ. яз.)

#миниурок #ide
Что выведет код выше?
Anonymous Quiz
24%
[1, 2]
61%
[1, 2, 3, 4]
11%
Ошибку
4%
Узнать ответ
⚡️ Немного про атрибуты

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

Порой подобная фича бывает лишней. К тому же подобный подход потребляет больше памяти. Если с маленькими объектами проблем не возникнет, то вот на больших вы заметите значительную разницу.

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

#теория
Что выведет код выше?
Anonymous Quiz
37%
0
43%
1
13%
Ошибку
7%
Узнать ответ
⚡️ Работаем с WhatsApp

pywhatkit
это не просто библиотека для взаимодействия с WhatsApp, а целый набор инструментов, которые могут пригодится при работе с этим мессенджером.

Установка: pip install pywhatkit

Помимо простой отправки сообщений, модуль также может преобразовывать изображения в ASCII art, превращать строку в рукописный текст, воспроизводить видео с YouTube.

И это ещё не весь функционал. Подробнее обо всех возможностях пакета можно почитать в документации.

#миниурок #pywhatkit
⚡️ Задачка с собеседования | #Medium

Условие:

Напишите функцию, которая поможет вам определить дату, если вы знаете номер дня в году, а также является ли год високосным или нет. Она принимает номер дня и isLeap в качестве аргументов и возвращает соответствующую дату года в виде строки «Месяц, день».

Примеры:

get_day(365, False) ➞ 'December, 31'
get_day(365, True) ➞ 'December, 30'
get_day(1, True) ➞ 'January, 1'
get_day(127, True) ➞ 'May, 6'

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Принципы SOLID. Часть 1

Это свод правил, который позволяет писать стабильный и гибкий код. Всего он состоит из пяти частей:

· Принцип единственной ответственности — каждый компонент должен выполнять одну и только одну функцию.

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

· Принцип подстановки Барбары Лисков — Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа не зная об этом. Пример нарушения на фото.

#миниурок #solid
⚡️ Задачка с собеседования | #Medium

Условие:

В качестве аргументов вам будут даны 2 числа: (num,s). Напишите функцию, которая возвращает массив из s числовых палиндромов, следующих после num. Если число является палиндромом, оно должно быть включено в список.

Примеры:

palindrome(6, 4) ➞ [11, 22, 33, 44]
palindrome(101, 2) ➞ [101, 111]
palindrome(59, 3) ➞ [66, 77, 88]

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу