Сообщество Программистов
14.8K subscribers
86 photos
3 videos
39 files
114 links
Здесь ты найдешь полезные материалы которые позволят тебе развиваться в IT.
А именно статьи, книги и курсы на тему Python, других языков программирования и IT технологий.

Youtube Канал: youtube.com/c/ZProgerIT
Автор канала: @zproger8
Download Telegram
Новый синтаксис дженериков Python3.12

В
прошлых версиях псевдонимы записывались след.образом:
from typing import TypeAlias

_T = TypeVar("_T")
ListOrSet: TypeAlias = list[_T] | set[_T]

Сейчас эта запись выглядит примерно так:
type ListOrSet[T] = list[T] | set[T]

Появилась идея показать новые потоки Python3.12 в отдельном видео, давайте наберем 150🔥 и я сделаю этот ролик
🔥306👍15
source.zip
5.5 KB
👆Исходный код

На создание видео ушло ~5 дней, буду благодарен, если поддержите лайком 😉
👍153🔥15🤔2
IceCream для замены print.pdf
78.5 KB
Добавляю статью с дополнительными фишками IceCream
🔥18👍10🤔4
source.zip
3.4 KB
👆 Исходный код из видео
🔥16👍5
Как улучшить скорость набора.pdf
605.6 KB
Заметки, которые я делал в процессе изучения
🔥34👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Что думаете на счет такого сплита? 😁
🔥120😁44👍10🤯6
Компоненты для сборки Lily58 Pro.pdf
681.7 KB
Было много комментариев с просьбой подготовить список компонентов моей split клавиатуры из последнего видео.

Я составил такой список и вы можете подобрать компоненты под себя.
👍43🔥13
source.zip
3.9 KB
👆 Исходный код
👍19🔥6
Добавляем индексы внутрь класса

1. Инициализация экземпляра. На этом этапе принимаем data и записываем его внутрь пространства self, который отображает созданный экземпляр (пункт 3).

2. Dunder метод getitem отрабатывает во время вызова 10й строчки кода (пункт 4). Он принимает тот самый index, благодаря которому мы можем вернуть значение из списка self.data.

3. Создаем экземпляр класса и передаем list.

4. Обращаемся по индексу, тем самым вызывая getitem.

80 🔥 и идем дальше
🔥113👍15🤔2😁1
Еще один пример динамической генерации объектов

Похожие примеры были в этом видео. Если вы не знали, то type можно использовать в том числе и для создания новых классов.

При запуске получаем вывод:
"Dynamic Class: bla-bla-bla"

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

100 🔥 и покажу как сделать динамическое наследование функционала.

Кстати это также примеры из курса ООП, на который сейчас действует новогодняя скидка.
Подробней о курсе рассказывал по этому тайм-коду.
🔥121👍8🤯7🤔3
Динамический импорт модулей

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

import importlib

a = importlib.import_module("my_module")
print(a.run_func()) # Вызываем функцию из модуля

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

Ваш софт может содержать собственные модули, которые необходимо загружать только после запроса пользователя, и такой подход позволяет решить эту проблему.
🔥58👍15😁1
Проверка изменений модулей с помощью importlib

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

Importlib предоставляет функционал, который поддерживает перезагрузку модулей "на лету" с учетом всех изменений.

80 🔥 и идем дальше
🔥156👍4🤔3