Поколение Python 🐍
50.3K subscribers
2K photos
16 videos
6 files
866 links
Серия курсов по языку Python от BEEGEEK 🐝.

Сайт: pygen.ru
Мерч: shop.pygen.ru
Чат: @pygen_ru_comments
Бот: @pygen_ru_bot
Поддержка: @pygen_ru_support

Перечень РКН: https://www.gosuslugi.ru/snet/673650d605391b3bfb5541c0
Download Telegram
Друзья, отвечаем на вопрос с собеседований. 😎

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

📌 Пример синхронного кода в Python — фрагмент с циклом for, обрабатывающим список элементов:

items = [1, 2, 3, 4, 5]
for item in items:
print(item)


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

➡️ Синхронный код может занять много времени и вызвать проблемы с производительностью, особенно когда код выполняет блокирующие операции, такие как чтение и запись файлов, обращение к сети или поиск значений в базе данных. Для решения этой проблемы в Python используют асинхронное программирование.

⭐️ Асинхронный код — подход к написанию кода, который позволяет выполнять несколько задач одновременно в рамках одного процесса за счет использования асинхронных функций и корутин. В отличие от синхронного кода, асинхронный код может запустить несколько задач параллельно и организовать их выполнение с помощью итераций и вызовов коллбеков.

📌 Пример асинхронного кода — использование библиотеки asyncio для запуска нескольких задач одновременно и ожидания их завершения:

import asyncio

async def hello():
await asyncio.sleep(1)
print("Hello")

async def world():
await asyncio.sleep(2)
print("World")

async def main():
await asyncio.gather(hello(), world())

if __name__ == '__main__':
asyncio.run(main())


➡️ Мы определяем 3 асинхронные функции: hello(), world() и main(). Функции hello() и world() печатают соответствующие сообщения и ждут 1 и 2 секунды соответственно. Функция main() запускает эти две функции одновременно с помощью asyncio.gather() и ждет, пока они завершат свою работу. Затем мы запускаем функцию main() с помощью asyncio.run(). В результате мы получим сообщения "Hello" и "World", каждое через 1 и 2 секунды соответственно, при этом результаты двух задач были получены почти одновременно.

Ставьте реакцию:

🔥 — если знали ответ на этот вопрос
👀 — если было полезно почитать ответ

#собеседование #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👀133🔥52❤14❤‍🔥1162🤝1🙊11
Друзья, подводим итоги очень страшного конкурса! 👻

🥳 Поздравляем победителя @MSupernaturalS! Она получит набор тематических носочков из нашего магазина мерча и бесплатный доступ к любому курсу "Поколения".

📌 Свяжемся с победителем в ближайшее время, чтобы обсудить выбор курса и доставку приза.

Ставьте реакцию:

🔥 — если любите участвовать в конкурсах
👀 — если обычно этого не делаете

#конкурс #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
29🔥53👀40❤10👍3👻3322
Друзья, детей часто пугают разными страшилками: бабайка, монстр под кроватью, призраки и вампиры... 😨

Становясь взрослыми, мы перестаем бояться этих баек. Но появляются новые страхи, которые детям неведомы:

😬 счета от стоматолога
😭 трое маленьких детей у соседей сверху
😳 внезапное осознание, что ближайшие сорок лет нужно ходить на работу

Какие еще страшилки для взрослых вы знаете? Пишите варианты в комментариях!

Ставьте реакцию:

🔥 — если любили рассказывать страшные истории в детстве
👀 — если таким не увлекались

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥81👀59😁663❤2😢2🫡22😈1👻1
Друзья, давайте разбираться с задачей про пятиугольник с числами. 😑

1️⃣ Заполним пустые ячейки на сторонах пятиугольника буквами от a до e. Сумму трех чисел на каждой стороне пятиугольника обозначим за х.

2️⃣ Получаем следующие равенства:

7 + 3 + a = x
a + 1 + b = x
b + 6 + c = x
c + 2 + d = x
d + e + 7 = x


3️⃣ Из первых двух сторон пятиугольника выразим a:

a + 1 + b = b + 6 + c
a = b + 6 + c - 1 - b
a = 5 + c

4️⃣
Далее выразим d через третью и пятую стороны пятиугольника:

c + 2 + d = x
d = x - c - 2
d = (7 + 3 + a) - c - 2
d = 8 + a - c

5️⃣
Подставляем значение a и находим:

d = 8 + (5 + c) - c
d = 13


Ставьте реакцию:

🔥 — если легко справились с задачей
👀 — если успели запутаться

#разборзадачи #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀66🔥39❤10542🤔1
Друзья, публикуем дайджест постов канала “Поколение Python” за октябрь! Наливаем горячий чаёк или кофе и читаем. ☕️

😵‍💫 ЗАДАЧИ

🔸Задача про шалости кота Кемаля и ее разбор
🔸Графическое уравнение и его разбор
🔸Задача про часы со стрелками и ее разбор
🔸Задача про пятиугольник с числами и ее разбор
🔸Вопрос с собеседований про недостатки Python и ответ на него
🔸Вопрос с собеседований про модули collections и itertools и ответ на него
🔸Вопрос с собеседований про синхронный и асинхронный код и ответ на него
🔸Тест №1
🔸Тест №2
🔸Тест №3
🔸Тест №4

🧔‍♂️ ПОЛЕЗНЫЕ МАТЕРИАЛЫ

🔸Слово недели. Протокол
🔸Слово недели. Дескриптор
🔸Слово недели. Контекстный менеджер
🔸Python. Операторы global и nonlocal
🔸Python. Иерархия числовых типов данных
🔸Python. Оператор match-case
🔸Алгоритмы и структуры данных. Битовые сдвиги
🔸Алгоритмы и структуры данных. Ручной перевод в десятичную систему счисления
🔸SQL. Числовые функции
🔸SQL. Функции даты и времени
🔸SQL. Триггеры

🦆 ПОЗНАВАТЕЛЬНЫЕ ПОСТЫ

🔸Теория поколений: как отличить бумера от миллениала?
🔸Что такое фишинг
🔸Почему язык Fortran используется до сих пор
🔸Первая компьютерная игра в истории

👩‍❤️‍👨 НОВОСТИ ПОКОЛЕНИЯ

🔸Новая коллекция мерча в магазине “Поколения”
Все бесплатные уроки в нашем курсе по базам данных и SQL
🔸Шпаргалки к нашим курсам от студентов “Поколения”
🔸Опрос про планируемый курс “Английский для ИТ-специалистов”
🔸Выросли скидки за отзывы на курсы “Поколения”
🔸Павел Хошев запустил сервис аналитики курсов Stepik

Ставьте ❤️ и сохраняйте дайджест в избранное, чтобы почитать на выходных!

#октябрь2025 #дайджест #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
58❤41❤‍🔥97🎄5👍42🔥1🤗11
Какой из этих языков программирования является низкоуровневым?
Anonymous Poll
11%
Python
10%
Fortran
69%
Assembler
10%
C++
1382720👍6🔥1
Ответ к тесту 🔼
Please open Telegram to view this post
VIEW IN TELEGRAM
👍701412🔥6❤54👨‍💻1
Выберите способ создания пустого множества
Anonymous Poll
69%
data = set()
20%
data = {}
4%
data = dict()
7%
data = ()
1👨‍💻34205❤4🔥22
Ответ на тест 🔼
Please open Telegram to view this post
VIEW IN TELEGRAM
😎5625135👀4
Друзья, не так давно мы рассказывали про подзапросы в SQL. Сегодня поговорим об их разновидностях, а именно о коррелированных и некоррелированных подзапросах. 😎

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

👀 Предположим, что наша база данных содержит таблицу Books, включающую информацию о названиях книг, их авторах и оценках критиков. В качестве примера использования некоррелированного подзапроса напишем запрос, извлекающий данные о книгах с минимальной оценкой критиков:

SELECT title, critic_score 
FROM Books
WHERE critic_score = (SELECT MIN(critic_score)
FROM Books);


Здесь подзапрос используется для вычисления наименьшего значения поля critic_score, то есть для определения минимальной оценки критиков. СУБД запоминает это значение и в дальнейшем просто использует его.

Таким образом, обработка запроса, содержащего некоррелированный подзапрос, происходит в два этапа:

1️⃣ выполняется подзапрос, определяется его результат
2️⃣ полностью выполняется основной запрос с использованием результата подзапроса

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

👀 В качестве примера использования коррелированного подзапроса напишем запрос, извлекающий данные о книгах, оценка критиков которых больше, чем у предыдущей книги в таблице, то есть у книги с идентификатором на один меньше:

SELECT title, user_score
FROM Books
WHERE critic_score > (SELECT critic_score
FROM Books AS InnerBooks
WHERE id = Books.id - 1);


Здесь подзапрос используется для вычисления оценки критика, у которого идентификатор на единицу меньше, чем у критика в текущей записи таблицы. СУБД выполняет такой подзапрос для каждой записи таблицы отдельно и возвращает результат, полученный на основе ее значений.

⏰⏰⏰⏰⏰⏰⏰ Подробнее рассказываем о подзапросах в нашем курсе "Базы данных и SQL". Его можно купить на нашем сайте pygen.ru.

Ставьте реакцию:

🔥 — если знали о разновидностях подзапросов
👀 — если узнали о них впервые

#sql #подзапросы #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀52🔥24❤7👍2🗿2211
Друзья, рады сообщить, что в декабре мы традиционно запускаем адвент-челлендж для программистов от "Поколения Python"! 🗓

😮 Что такое адвент?

Существует европейская традиция: отсчитывать дни до прихода Рождества, открывая окошечки в специальных адвент-календарях, за которыми обычно скрываются сладости или небольшие игрушки.

😍 А мы запускаем адвент-челлендж для настоящих программистов! С 1 по 25 декабря ежедневно будет открываться одна новогодняя задача. Решайте их каждый день, чтобы прокачать 🧠 и поддержать праздничное настроение! 🎄

🚨🚨⚠️🚨☝️ Адвент-челлендж будет проходить на Stepik в курсе с конкурсами и марафонами. Чтобы принять участие, необходимо зарегистрироваться на нашем сайте.

⭐️ Перед Новым годом мы подведем итоги челленджа. Подарки от "Поколения Python" получат самый быстрый решатель, самый точный решатель и 5 счастливчиков из числа тех, кто решит все задачи адвента. 😎

Ставьте ❤️, если будете участвовать в адвенте!

#поколениеpython #итадвент2025 #конкурс
Please open Telegram to view this post
VIEW IN TELEGRAM
22❤165🔥261055❤‍🔥2👻2
1👨‍💻35😱2521👍96❤53🔥2
Друзья, сегодня знакомимся с группами исключений в Python. 🖥

💡 В Python 3.11 в стандартную библиотеку был добавлен класс ExceptionGroup для обработки групп исключений. Конструктор этого класса принимает в качестве аргумента:

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

В момент создания объекта исключения он не возбуждается автоматически — для этого необходимо использовать оператор raise. Мы можем создать список таких объектов и передать его в конструктор класса ExceptionGroup, создав тем самым группу исключений, которую можно возбудить также с помощью оператора raise.

Приведенный ниже код:
exc_list = [
ValueError('Ошибка 1'),
TypeError('Ошибка 2'),
RuntimeError('Ошибка 3'),
ValueError('Ошибка 4')
]

raise ExceptionGroup('Произошло несколько ошибок', exc_list)


приводит к возбуждению исключения:
 + Exception Group Traceback (most recent call last):
| File "main.py", line 8, in <module>
| raise ExceptionGroup('Произошло несколько ошибок', exc_list)
| ExceptionGroup: Произошло несколько ошибок (4 sub-exceptions)
+-+---------------- 1 ----------------
| ValueError: Ошибка 1
+---------------- 2 ----------------
| TypeError: Ошибка 2
+---------------- 3 ----------------
| RuntimeError: Ошибка 3
+---------------- 4 ----------------
| ValueError: Ошибка 4
+------------------------------------


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

Приведенный ниже код:
exc_list = [
ValueError('Ошибка 1'),
TypeError('Ошибка 2'),
RuntimeError('Ошибка 3'),
ValueError('Ошибка 4')
]

for exc in exc_list:
try:
raise exc
except Exception:
pass

raise ExceptionGroup('Произошло несколько ошибок', exc_list)


приводит к возбуждению исключения:
+ Exception Group Traceback (most recent call last):
| File "<frozen runpy>", line 198, in _run_module_as_main
| File "<frozen runpy>", line 88, in _run_code
| File "main.py", line 14, in <module>
| raise ExceptionGroup('Произошло несколько ошибок', exc_list)
| ExceptionGroup: Произошло несколько ошибок (4 sub-exceptions)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "main.py", line 10, in <module>
| raise exc
| ValueError: Ошибка 1
+---------------- 2 ----------------
| Traceback (most recent call last):
| File "main.py", line 10, in <module>
| raise exc
| TypeError: Ошибка 2
+---------------- 3 ----------------
| Traceback (most recent call last):
| File "main.py", line 10, in <module>
| raise exc
| RuntimeError: Ошибка 3
+---------------- 4 ----------------
| Traceback (most recent call last):
| File "mian.py", line 10, in <module>
| raise exc
| ValueError: Ошибка 4
+------------------------------------


🌟 Для обработки всей группы исключений также используется конструкция try-except, а для обработки отдельных типов исключений группы вместо оператора except необходимо использовать новый оператор except*. Он объединяет исключения одного типа в отдельную группу и обрабатывает все исключения этой группы в одном блоке кода.

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

Ставьте реакцию:

🔥 — если знали о группах исключений в Python
👀 — если узнали о них впервые

#группыисключений #полезныйматериал #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀101🔥23❤773👍21
Друзья, возможно, вы заметили, что недавно наблюдались перебои в работе Telegram. 😔

😭 Мы задумались: если мессенджер будет заблокирован, что нам делать с нашим прекрасным сообществом? Как не потерять его — то есть всех вас?

⚠️ Хотим задать этот вопрос вам. Где вам будет удобнее оставаться на связи с нами в случае блокировки Telegram?

🔽 Голосуйте в опросе под постом и предлагайте свои варианты в комментариях.

Ставьте реакцию:

🗿 — если у вас были перебои в работе Telegram
👀 — если пока не сталкивались с такой проблемой

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀330🗿55522
Друзья, принесли вам новое слово недели. 😎

🖥 Docker (Докер) — это платформа с открытым исходным кодом для упаковки приложений в изолированные переносимые блоки, называемые контейнерами.

✅ Каждый контейнер содержит всё необходимое для работы приложения: код, модули и библиотеки, различные зависимости и даже операционные системы. Это позволяет быстро развертывать и масштабировать приложения в любой среде, гарантируя их работу. Docker упрощает разработку, тестирование и доставку приложений, отделяя их от инфраструктуры и обеспечивая единообразие окружения в различных системах.

📌 Ключевые компоненты Docker:

🟣контейнер
🟣образ (image)
🟣Dockerfile
🟣реестр
🟣Docker Desktop

Преимущества Docker:

⭕️ обеспечивает переносимость: приложение, упакованное в контейнер, будет работать одинаково на любом компьютере с установленным Docker
⭕️ предотвращает конфликт зависимостей, поскольку каждый контейнер изолирован от других
⭕️ автоматизирует процесс сборки, доставки и развертывания приложений
⭕️контейнеры занимают намного меньше места, чем виртуальные машины, и запускаются за считанные секунды

Ставьте реакцию:

🔥 — если вам уже приходилось работать с Docker
❤️ — если слышали о нем, но не пользовались
👀 — если впервые узнали о Docker

#поколениеpython #словонедели #docker
Please open Telegram to view this post
VIEW IN TELEGRAM
❤211🔥121👀79🫡3👍22👨‍💻111
Друзья, сегодня у нас задачка для решения в уме. 🧠

Каждый логотип языка программирования на картинке к посту обозначает некоторое целое число. Чему в таком случае равно выражение 🖥 + 🖥?

Пишите ответы в комментариях, не забывая о скрытом тексте.

Ставьте реакцию:

🔥 — если знали все логотипы с картинки
👀 — если некоторые увидели впервые

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥173👀48👍108❤43❤‍🔥11