Поколение 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. 😎

✏️ Изменяемые (mutable) объекты — это объекты, которые можно изменять после создания. К ним относятся:

🟣 списки
🟣 множества
🟣 словари

Например, можно дополнить список новыми элементами или изменить старые:

numbers = [1, 2, 3]

# добавляем число 4 в конец списка
numbers.append(4)

# изменяем первый элемент списка на число 5
numbers[0] = 5

print(numbers) # [5, 2, 3, 4]


💎 Неизменяемые объекты (immutable) — это объекты, которые нельзя изменить после создания. К ним относятся:

🔵 числа
🔵 строки
🔵 кортежи
🔵 замороженные множества

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

text = 'pygen is the best.'

# создается новая строка
new_text = text.upper()

print(text) # pygen is the best!
print(new_text) # PYGEN IS THE BEST!


☝️ Важно понимать разницу между изменяемыми и неизменяемыми объектами при работе с кодом:

🟡изменяемые объекты при передаче в функцию могут быть изменены внутри нее
🟡ключами словаря или элементами множества могут быть только неизменяемые объекты
🟡изменяемые значения в качестве параметров по умолчанию в функциях могут приводить к неожиданным эффектам
🟡Python кэширует некоторые неизменяемые объекты (малые числа, строки), что экономит память и ускоряет работу программы
🟡поведение программы непредсказуемо, когда несколько переменных ссылаются на один и тот же изменяемый объект

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

👍 — если умеете отличать изменяемые объекты от неизменяемых
🙉 — если до сих пор путаетесь

#python #полезныйматериал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍130🙉35❤1977😁22👨‍💻1
Друзья, хотим попросить у вас совета. 😍

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

💡 Тогда у нас возникла другая идея: написать книгу "Рассказы о Python". Каждая глава будет посвящена особенностям языка, рассказывая о них в свободной, художественной форме и расширяя представления читателей о Python.

Ключевые свойства книги:

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

Интересен ли вам такой проект? Какую книгу от "Поколения" вы бы купили?

☝️☝️☝️☝️ Если вам интересна книга по Python, подпишитесь на рассылку новостей о проекте на сайте "Поколения". Ваши подписки помогают нам оценить популярность идеи и влияют на приоритеты в рабочих планах!

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

❤️ — если купили бы бумажную книгу от "Поколения"
👀 — если не любите бумажные книги

#поколениеpython #рассказыоpython #идеи #книгапоколения
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤336👀9313✍665👍3🤣1
Друзья, сегодня разбираем задачу на устный счет. 🧮

1️⃣ Из второго выражения находим, что 🖥 = 8 : 2 = 4

2️⃣ Подставляем в третье выражение и выясняем, что 🖥 = 4 : 2 = 2

3️⃣ Найденные значение подставляем в первое выражение и находим, что 🖥 = 4 + 2 = 6

4️⃣ Находим искомый результат: 🖥 + 🖥 = 6 + 2 = 8

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

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

#разборзадачи #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥170👍11👏4👀33❤22😁11
Друзья, принесли вам новое слово недели! 😎

💻 Kubernetes (K8s) — это платформа с открытым исходным кодом, предназначенная для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями в кластере серверов.

В отличие от Docker, который создает контейнеры, Kubernetes:

🟣 управляет работой контейнеров
🟣распределяет их между узлами
🟣обеспечивает доступность
🟣упрощает управление микросервисами

✏️ Kubernetes автоматизирует множество рутинных задач. Например, он может восстанавливать работу контейнеров при сбоях, автоматически распределять нагрузку между контейнерами и управлять ресурсами. Он координирует жизненный цикл контейнеров, собирая их в логические группы, которые называются "подами".

📌 Kubernetes был разработан компанией Google и спустя время открыт сообществу. Сейчас он развивается тысячами разработчиков по всему миру.

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

🔥 — если слышали раньше о Kubernetes
👀 — если узнали о нем впервые

#поколениеpython #Kubernetes #словонедели
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👀93❤1133😁11
Друзья, сегодня задача на скорость. Засекайте 30 секунд — и погнали! 🚲

🧠🧠🧠🧠

Во дворе Тимура катаются на велосипедах 16 детей. Каждый ездит или на двухколесном, или на трехколесном велосипеде. Всего на их велосипедах 38 колес.

🟢🟢🟢🟢🟢🟢

Сколько детей ездит на трехколесных велосипедах?

Ответы и ход мысли пишите в комментариях, не забывая прятать их под скрытым текстом! 😎

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

🔥 — если у вас был велосипед в детстве
👀 — если брали покататься

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥168👀188❤4🤔111
Друзья, а вы слышали про язык ассемблера? 🥸

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

⚙️ Язык ассемблера стал первым шагом к более понятному программированию: вместо чисел стали использовать короткие текстовые команды, которые напрямую соответствуют инструкциям процессора. Это низкоуровневый язык программирования, максимально близкий к компьютерному "железу".

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

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

👍 Ассемблер незаменим:

🔸 в прошивках микроконтроллеров
🔸 в системном и встроенном программном обеспечении
🔸 в драйверах, BIOS и ядрах ОС
🔸 в высокопроизводительных и критически точных системах

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

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

🔥 — если знали о существовании ассемблера
💻 — если узнали о нем впервые

#япознаюмир #поколениеpython #ассемблер
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥329👨‍💻17👀178❤43👍22❤‍🔥1
Друзья, пришли озадачить вас очередным вопросом с собеседований. 😉

Чем фреймворк отличается от библиотеки?

🤍 Ответы на вопрос пишите в комментариях! 😍

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

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

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👀210❤51👍94🔥222❤‍🔥1💯1
Друзья, ранее мы рассказывали про обобщенные табличные выражения (CTE). Сегодня расскажем про одну из их разновидностей. 🖥

📌 Рекурсивное CTE — это CTE, содержимое которого последовательно формируется на основе самого себя. Тело рекурсивного CTE, в отличие от обычного CTE, включает два извлекающих запроса:

🟣первый (нерекурсивный) — для однозначного определения содержимого первой записи CTE
🟣второй (рекурсивный) — для определения правила формирования всех остальных записей

📎 Содержимое каждой записи рекурсивного CTE, кроме первой, зависит только от содержимого предыдущей записи. Так, содержимое второй записи определяется на основе первой записи, содержимое третьей — на основе второй и так далее.

👀 Например, если первая запись CTE включает число 1, а правило, определяющее оставшиеся записи CTE, имеет вид <значение предыдущей записи> + 1, то вторая запись будет включать число 2, третья — 3 и так далее.

Синтаксис создания рекурсивного CTE практически повторяет синтаксис создания обычного CTE и имеет следующий вид:

WITH RECURSIVE <имя CTE> AS (
<извлекающий запрос, определяющий первую запись CTE>
<пара ключевых слов UNION ALL или UNION DISTINCT>
<извлекающий запрос, определяющий правило формирования очередной записи CTE (второй, третьей и так далее)>
)

<основной запрос, который может обращаться к рекурсивному CTE>


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

🟣UNION ALL — при этом CTE будет включать повторяющиеся записи, если они возникнут при формировании
🟣UNION DISTINCT — при этом все повторяющиеся записи будут удалены

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

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

🔥 — если знали о существовании рекурсивных СТЕ
👀 — если узнали о них впервые

#sql #СТЕ #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀69🔥32❤9211
Друзья, наш магазин мерча дарит подарки! 🔮

При покупке от 3000 рублей вы получаете скидку 10% и белый свитшот с дизайном на ваш выбор. 🔥

Правила акции:

🪄 сделайте заказ от 3000 рублей до 24 ноября
🪄 укажите промокод БЕЛАЯМАГИЯ
🪄 ждите сообщения от нашего менеджера, чтобы выбрать дизайн свитшота и обсудить детали заказа

Надеемся, наша акция поможет вам подобрать подарки к Новому году для вас и ваших друзей! 👩‍❤️‍👨

🛍 ЗА ПОКУПКАМИ 🛍

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

🎄— если уже чувствуете приближение Нового года
🔥 — если вам пока не до этого

#поколениеpython #мерч #акция
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34🎄236❤2🎅221
Друзья, разбираемся с ответом на вопрос с собеседования. 👩‍❤️‍👨

И фреймворки, и библиотеки используются для упрощения разработки программного обеспечения. Но в чем разница? 🧐

⭐️ Библиотека:

🟡 это коллекция модулей или функций, предназначенных для использования другими приложениями
🟡содержит набор готовых решений для различных задач и обеспечивает функциональность, которую можно использовать в своём приложении
🟡пользователь сам выбирает, какие модули или функции использовать, а какую логику реализовывать самостоятельно

❤️ Фреймворк:

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

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

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

🔥 — если уже пользовались и библиотеками, и фреймворками
👀 — если пока их не затрагивали

#собеседования #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀88🔥85❤‍🔥66❤33👍2🥰11
Друзья, сегодня поговорим о символах и байтах в Python. 😉

‼️ В Python 3 строки представляют собой последовательности символов. Каждый символ можно разделить на три составляющие:

🌱графическое представление
🌱идентификатор
🌱байтовое представление

➡️ Графическое представление символа — это его внешний вид, то есть то, что обычно видит пользователь, например: B, e, g, k, 🐝.

➡️ Идентификатор символа — это его кодовая позиция. Она представлена числом от 0 до 1114111, которое в стандарте Unicode записывается шестнадцатеричными цифрами в количестве от 4 до 6 с префиксом U+. Например, идентификатором английской буквы B является U+0042, а смайлика 🐝 — U+1F41D.

Чтобы увидеть, какой символ представляет идентификатор, можно воспользоваться функцией chr(). Для этого мы можем передать в эту функцию не только десятичное, но и шестнадцатеричное число, которое в Python записывается с префиксом 0x.

Приведенный ниже код:
print(chr(128029))
print(chr(66))

print(chr(0x1f41d))
print(chr(0x0042))


выводит:
🐝
B
🐝
B


➡️ Байтовое представление — это последовательность байтов, из которых состоит символ. Эта последовательность определяется кодировкой — алгоритмом преобразования идентификаторов в последовательности байтов и наоборот. Например, в кодировке UTF-8 символ 🐝 представлен 4 байтами, а в кодировке UTF-16 — 5 байтами.

Каждый байт последовательности представляет собой число от 0 до 255, которое записывается двумя шестнадцатеричными цифрами с префиксом \x. Например, строка Beegeek 🐝 в байтовом представлении имеет следующий вид:
b'\x42\x65\x65\x67\x65\x65\x6b\x20\xf0\x9f\x90\x9d'

💚 В Python для работы с последовательностями байтов используются типы bytes и bytearray.

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

🔥 — если знали, из чего состоят символы
👀 — если узнали об этом впервые

#поколениеpython #python #полезныйматериал #символы
Please open Telegram to view this post
VIEW IN TELEGRAM
👀81🔥72❤115👍332👏1
Друзья, у всех нас очень разные представления об идеальном рабочем месте. 😁

Представили на картинке несколько разных сетапов: от стандартных до самых безумных. Какой из них у вас на столе? А как выглядит сетап вашей мечты? Расскажите в комментариях! 😍

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

🔥 — если у вас больше одного монитора (или вы хотите больше одного)
👀 — если и одного достаточно

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥303👀171👍875❤33❤‍🔥1🎄1👾1
Друзья, разбираем задачу про велосипеды! 🛞

🐌 Классическое решение

Обозначим количество трехколесных велосипедов за x. Тогда двухколесных велосипедов во дворе Тимура 16 − x.

Теперь займемся колесами. На трехколесных велосипедах будет 3x колес, а на двухколесных — (16 − x) × 2 колес. Всего колес 38, поэтому составим уравнение:

3x + (16 − x) × 2 = 38
3x + 32 − 2x = 38
x = 38 − 32
x = 6


Итак, во дворе Тимура 6 детей ездят на трехколесных велосипедах.

🐎 Быстрое решение

Представим, что все велосипеды во дворе Тимура двухколесные. Поскольку детей на велосипедах 16, то получим 16 × 2 = 32 колеса. Теперь заменим один велосипед на трехколесный и получим +1 колесо. Сколько всего велосипедов нужно заменить, чтобы получилось 38 колес? Правильно, у нас 6 трехколесных велосипедов.

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

🔥 — если сразу пришли к быстрому способу решения
👀 — если первым на ум пришел классический способ

#разборзадачи #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥69👀38❤94👌1🏆1🆒111
Друзья, сегодняшнее слово недели — кортеж (нет, не президентский). 😃

🔎Слово "tuple" происходит от английского суффикса, который встречается в словах типа double, triple, quadruple и указывает на кратность. В математике этот суффикс дал понятие n-tuple — упорядоченный набор из n элементов, после чего само "tuple" обособилось как имя для кортежа. Из математики термин перекочевал в информатику (включая Python) и означает фиксированный упорядоченный набор элементов.

✏️ Кортеж можно создать с помощью встроенной функции tuple() на основе другого итерируемого объекта или через явное указание элементов через запятую (обычно в круглых скобках):

cities = tuple({'Рим', 'Москва', 'Перт'})
date = 2012, 12, 12
point = (-4, 3)


Попытка изменить кортеж приводит к ошибке:

letters = ('a', 'b', 'c')
letters[0] = 'd' # TypeError: 'tuple' object does not support item assignment


Особенности кортежей:

✔️ элементы упорядочены
✔️ доступны операции индексации, срезов, перебора в цикле
✔️ можно хранить элементы разных типов данных (в том числе изменяемых)
✖️ изменить элементы после создания нельзя

Когда лучше использовать кортежи:

🔵 если данные фиксированы: создаются один раз и больше не изменяются (например, координаты точки, дата рождения или параметры телефона)
🔵 если нужно использовать какие-то данные в качестве ключа словаря или элемента множества

О преимуществах кортежей перед списками мы говорили в этом посте.

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

❤️ — если используете кортежи в своих программах
👀 — если не понимаете, зачем они вообще нужны в Python

#поколениеpython #словонедели #кортеж #tuple
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤105👀2215⚡7🔥53👍1🆒11
Друзья, сегодня предлагаем задачу про классическую головоломку "Ханойская башня". 🤦

✏️ Кот Кемаль пытается собрать Ханойскую башню. Условия: есть 3 стержня и 20 дисков разных размеров. Все диски находятся на левом стержне и расположены снизу вверх в порядке уменьшения.

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

1️⃣ за один ход можно переместить только один диск
2️⃣ нельзя класть больший диск на меньший
3️⃣ нельзя откладывать диски в сторону

Цель Кемаля — решить задачу за минимальное количество ходов. Если один ход он выполняет ровно за одну секунду, сколько полных суток ему понадобится, чтобы полностью решить задачу для 20 дисков? 🐱

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

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

🔥 — если сталкивались раньше с Ханойской башней
👀 — если узнали об этой головоломке впервые

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥79👀54❤5👍53🆒2😎221
Друзья, а вы знаете, что в 1980-е годы программы хранили на аудиокассетах? 😵‍💫

🔈 Компьютер кодировал программу в набор высоких и низких тонов. Чтобы загрузить программу, нужно было вставить кассету в магнитофон и ждать, пока компьютер "слушает" запись и переводит ее обратно в байты.

⚙️ Дело в том, что домашние компьютеры уже были доступны, но дисководы оставались роскошью. Кассеты же стоили копейки и умели записывать сигнал достаточно надежно.

🖥 Популярные компьютеры того времени:

🔵 ZX Spectrum
🔵Commodore 64
🔵Amstrad CPC
🔵 отечественные БК-0010 и "Корвет"

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

🔥 — если застали эпоху аудиокассет
👀 — если не использовали кассеты

#япознаюмир #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥245👀9811🤯3💯2👾22⚡1😁1😎11
😇31👍151411😭5❤4🤩3❤‍🔥1🌚1👀11
Друзья, сегодня поговорим про три вида нотации математических и логических формул. 📎

📌 Инфиксная нотация — привычный нам способ записи, при котором оператор ставится между операндами, например, a * b или c + d.

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

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

Инфиксное выражение a * b в префиксной нотации будет выглядеть как * a b, а выражение c + d — как + c d.

Запишем инфиксное выражение a + b * с в префиксной форме:

+ a * b c


В полученном префиксном выражении оператор + применяется к операндам a и * b c, где * b c — результат умножения b на c. Таким образом, это выражение можно прочитать так: прибавить к a результат умножения b на c.

​📌 Постфиксная нотация — это способ записи математических выражений, при котором оператор ставится после операндов. Легла в основу некоторых языков программирования (например, Форт) и множества настольных калькуляторов.

Инфиксное выражение a * b в постфиксной нотации будет выглядеть как a b *, а выражение c + d — как c d +.

Запишем инфиксное выражение a + b * с в постфиксной форме:

a b c * +


В полученном постфиксном выражении оператор + применяется к операндам a и b c *, где b c * — результат умножения b на c. Таким образом, это выражение можно прочитать так: к значению a и результату применения к b и c операции умножения применить операцию сложения.

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

🙂 Префиксную нотацию разработал польский математик Ян Лукасевич, поэтому ее часто называют польской нотацией. На основе префиксной нотации австралийский философ Чарльз Хэмблин изобрел постфиксную нотацию. По аналогии с префиксной нотацией постфиксную принято называть обратной польской нотацией.

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

🔥 — если знали о существовании различных нотаций
👀 — если не знали, что такое возможно

#алгоритмы #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀148🔥57❤106👍431
Друзья, наша черная пятница уже началась! 😍

💵 Акция: стоимость любого курса при покупке на сайте "Поколения" составит 4990 р (вместо 7900). Скидка действует по промокоду БЭТМЕН до 5 декабря.

🎁 Первым 10 покупателям, которые активируют промокод, мы подарим мерчбокс для программиста.

🙊 А еще все, кто сделает заказ по промокоду, получат на электронную почту или телеграм бонус к курсу, который облегчит обучение.

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

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

🔥 — если ждали черную пятницу
👀 — если она всегда приходит неожиданно

#поколениеpython #чернаяпятница #скидки #мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
👀57🔥22❤1063👍22😭1