ch
Feedback
ITDEAL

ITDEAL

前往频道在 Telegram

Разработка комплексных IT решений для бизнеса и частных заказчиков. Чат: @pybytes_chat Founder: @lunasantrope

显示更多
1 198
订阅者
无数据24 小时
-67
-2030
帖子存档
ITDEAL
1 198
Декораторы в Python [Часть 5] 🤝 Реализация декораторов через классы. Вместо использования функций, декораторы могут быть реа
Декораторы в Python [Часть 5] 🤝 Реализация декораторов через классы. Вместо использования функций, декораторы могут быть реализованы с помощью классов. Это добавляет гибкость в создание декораторов, позволяя использовать состояние объекта для управления поведением. 🛠Пример классового декоратора:

class CountCalls:
⠀⠀def __init__(self, func):
⠀⠀⠀⠀self.func = func
⠀⠀⠀⠀self.num_calls = 0

⠀⠀def __call__(self, *args, **kwargs):
⠀⠀⠀⠀self.num_calls += 1
⠀⠀⠀⠀print(f"Вызов {self.num_calls} для {self.func.__name__}")
⠀⠀⠀⠀return self.func(*args, **kwargs)

@CountCalls
def say_hello():
⠀⠀return 'Hello!'

print(say_hello())
print(say_hello())
🥰В этом примере класс CountCalls используется как декоратор. Он отслеживает, сколько раз была вызвана функция say_hello. Каждый раз, когда функция вызывается, CountCalls увеличивает num_calls и печатает сообщение. 🤔 Использование классов для создания декораторов позволяет сохранять состояние между вызовами, что открывает дополнительные возможности для мониторинга и других задач. 🔄 Классовые декораторы предлагают мощный инструмент для расширения функциональности, сохраняя при этом читаемость и поддерживаемость кода. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Декораторы в Python [Часть 4] 🫡Накопление декораторов (Stacking Decorators). Накопление (или стекинг) декораторов позволяет применить несколько декораторов к одной функции, добавляя многоуровневую функциональность. При этом декораторы применяются последовательно, снизу вверх. 🛠Пример стекинга декораторов:
def make_bold(func):
⠀⠀def wrapper():
⠀⠀⠀⠀return f"<b>{func()}</b>"
⠀⠀return wrapper

def make_italic(func):
⠀⠀def wrapper():
⠀⠀⠀⠀return f"<i>{func()}</i>"
⠀⠀return wrapper

@make_bold
@make_italic
def say():
⠀⠀return 'Hello'

print(say())  # Выведет: <b><i>Hello</i></b>
🫣 В этом примере, say сначала обрабатывается декоратором make_italic, а затем результат – декоратором make_bold. Это иллюстрирует, как стекинг позволяет комбинировать несколько декораторов для достижения сложной функциональности. 🤔Порядок важен! Последовательность применения декораторов критична, поскольку влияет на конечный результат. Необходимо тщательно продумать порядок, чтобы избежать неожиданных результатов. 🔄 Стекинг декораторов увеличивает гибкость и мощность функционала декораторов, позволяя легко комбинировать различные модификации функций. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Декораторы в Python [Часть 3] 🔝Декораторы классов. В отличие от функциональных декораторов, которые модифицируют функции, де
Декораторы в Python [Часть 3] 🔝Декораторы классов. В отличие от функциональных декораторов, которые модифицируют функции, декораторы классов предназначены для изменения или расширения функциональности классов. Они принимают класс в качестве аргумента и возвращают новый класс (как в случае с dataclass) или модифицированный исходный. 🛠 Пример создания декоратора класса:
def decorator_cls(original_class):
⠀⠀class ModifiedClass(original_class):
⠀⠀⠀⠀new_attribute = 'I am new!'
⠀⠀⠀⠀def extra_method(self):
⠀⠀⠀⠀⠀⠀return "This is an extra method!"
⠀⠀return ModifiedClass

@decorator_cls
class OriginalClass:
⠀⠀def __init__(self):
⠀⠀⠀⠀self.name = "Original"

instance = OriginalClass()
print(instance.new_attribute)  # Выведет: I am new!
print(instance.extra_method())  # Выведет: This is an extra method!
😑 Этот пример демонстрирует, как декоратор класса может добавить новые атрибуты и методы к классу. Это особенно полезно для добавления функциональности ко всем экземплярам класса без изменения самого класса. 🤔Использование декораторов классов может быть особенно полезным в таких случаях, как регистрация классов, проверка атрибутов, добавление новых методов или автоматическая сериализация. 🔄 Применение декораторов классов упрощает управление изменениями и повышает гибкость кода, позволяя разработчикам легко добавлять новую функциональность к существующим классам. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
🚀🌐 ВАКАНСИЯ: Middle Python Developer (Python 3.9+) 🌐🚀 Привет, Python мастер! 👋 Мы ищем опытного Middle Python Developer,
🚀🌐 ВАКАНСИЯ: Middle Python Developer (Python 3.9+) 🌐🚀 Привет, Python мастер! 👋 Мы ищем опытного Middle Python Developer, готового внести свой вклад в разработку увлекательных проектов! 🚀 Требования к кандидату: ➡️ Python 3.9+: Профессиональные навыки в разработке на Python и использование последних версий. ➡️ Библиотеки: Опыт работы с aiogram 3.0, asyncio, aiohttp. ➡️ Базы данных: Знание работы с PostgreSQL, опыт в работе с SQL и noSQL. ➡️ Docker: Уверенное использование Docker и опыт работы с docker compose. ➡️ ORM и миграции: Знание sqlalchemy и alembic. ➡️ Типизация: Опыт применения typing. ➡️ Дополнительные технологии: Опыт работы с FastAPI, знание Celery для асинхронных задач. ➡️ Фреймворки: Знание Flask и опыт в его применении. ➡️ Портфолио: Презентация прошлых проектов и достижений. ➡️ 18+: Соблюдение возрастных требований. ➡️ ООП: Глубокое понимание объектно-ориентированного программирования. Требования к софт-скиллам: ➡️ Коммуникабельность: Способность четко и эффективно общаться в команде. ➡️ Работа в команде: Опыт работы в командной среде, умение слушать и высказывать свое мнение. ➡️ Самостоятельность: Готовность принимать ответственность за свою работу и принимать инициативу. ➡️ Проактивность: Активное участие в обсуждении и улучшении процессов разработки. ➡️ Адаптивность: Готовность быстро адаптироваться к изменениям и новым технологиям. 🤖 Контакты @lunasantrope

ITDEAL
1 198
Декораторы в Python [Часть 2] 📈Создание функциональных декораторов. Основная идея функционального декоратора заключается в т
Декораторы в Python [Часть 2] 📈Создание функциональных декораторов. Основная идея функционального декоратора заключается в том, чтобы расширить поведение функции без её изменения. Декоратор принимает функцию как аргумент и возвращает новую функцию, добавляя к ней дополнительную функциональность. 🛠Пример создания декоратора:

def uppercase_decorator(func):
⠀⠀def wrapper():
⠀⠀⠀⠀result = func()
⠀⠀⠀⠀return result.upper()
⠀⠀return wrapper

@uppercase_decorator
def greet():
⠀⠀return 'Hello there!'

print(greet())  # Выведет: 'HELLO THERE!'
💡 В этом примере, декоратор uppercase_decorator берёт возвращаемое значение функции greet и преобразует его в верхний регистр. Это показывает, как можно изменить результат работы функции, не изменяя её первоначальный код. 🤔 Параметризированные декораторы. Иногда требуется большая гибкость, чем предоставляет простой декоратор. В таких случаях можно создать декоратор с параметрами:

def repeat(times):
⠀⠀def decorator_repeat(func):
⠀⠀⠀⠀def wrapper(*args, **kwargs):
⠀⠀⠀⠀⠀⠀for _ in range(times):
⠀⠀⠀⠀⠀⠀⠀⠀print(func(*args, **kwargs))
⠀⠀⠀⠀return wrapper
⠀⠀return decorator_repeat

@repeat(times=3)
def say_word(word):
⠀⠀return word

say_word('Hello')  # Выведет 'Hello' три раза
😎 Использование функциональных декораторов позволяет разработчикам Python легко расширять и модифицировать поведение функций, что делает код более читаемым, эффективным и организованным. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
🚀🌐 ВАКАНСИЯ: Middle FrontEnd Developer (JavaScript) 🌐🚀 Привет, фронтенд гуру! 👋 Мы расширяем нашу команду и ищем опытног
🚀🌐 ВАКАНСИЯ: Middle FrontEnd Developer (JavaScript) 🌐🚀 Привет, фронтенд гуру! 👋 Мы расширяем нашу команду и ищем опытного Middle FrontEnd Developer, готового воплощать в жизнь самые смелые идеи наших проектов! 🚀 Требования к кандидату: ➡️ JavaScript/ES6+: Глубокие знания и опыт в разработке на чистом JavaScript и современных стандартах ECMAScript. ➡️ Фреймворки: Уверенное владение React.js и/или Vue.js. Опыт работы с другими фреймворками – большой плюс! ➡️ HTML5 & CSS3: Продвинутые навыки в создании современных и отзывчивых интерфейсов. ➡️ RESTful API: Опыт работы с взаимодействием фронтенда с бэкендом через RESTful API. ➡️ Сборщики и модульные системы: Знание инструментов типа Webpack, Babel и понимание модульных систем (CommonJS, ES6 Modules). ➡️ Git: Навыки работы с системами контроля версий, в том числе опыт с Git. Будет плюсом: ➡️ Тестирование кода: Знание и опыт в написании модульных и интеграционных тестов. ➡️ Опыт работы с GraphQL: Понимание и практический опыт работы с GraphQL API. ➡️ Английский язык: Хорошее понимание технической документации на английском. Софт-скилы: ➡️ Коммуникабельность: Способность четко и эффективно общаться в команде. ➡️ Работа в команде: Опыт работы в командной среде, умение слушать и высказывать свое мнение. ➡️ Самостоятельность: Готовность принимать ответственность за свою работу и принимать инициативу. 🐱 С кандидатом будет оговорен месячный оклад либо система Proof Of Work 🤖 Контакты @lunasantrope

ITDEAL
1 198
Декораторы в Python [Часть 1] 🥱 Зачем нужны декораторы? В Python декораторы — это мощный инструмент, позволяющий изменять по
Декораторы в Python [Часть 1] 🥱 Зачем нужны декораторы? В Python декораторы — это мощный инструмент, позволяющий изменять поведение функций и методов. Они обеспечивают простой способ добавления функциональности к существующему коду, не изменяя его напрямую. 🛠Как работают декораторы? Декоратор в Python — это вызываемый объект (callable), который принимает другой вызываемый объект и возвращает любой объект (не обязательно вызываемый). Это значительно расширяет возможности декораторов по сравнению с простым изменением функций.
def simple_decorator(function):
⠀⠀return "No more original function!"

@simple_decorator
def will_not_run():
⠀⠀return "I am the original function!"


print(will_not_run)  # Выведет: No more original function!
🔍В этом примере simple_decorator прямо заменяет функцию will_not_run строкой, демонстрируя, что декоратор может возвращать любой объект, не обязательно функцию. Это ключевое отличие, позволяющее декораторам в Python быть чрезвычайно гибкими. 🌐Эта особенность делает декораторы важным инструментом в арсенале разработчика Python, позволяя адаптировать функциональность к различным сценариям использования. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
QUIZ: Что из этого НЕ является правдивым фактом о декораторах?
Anonymous voting

ITDEAL
1 198
__slots__ в Python 🐍 🔤Предназначение slots: slots определяют набор атрибутов, которые объект будет иметь, ограничивая созда
__slots__ в Python 🐍 🔤Предназначение slots: slots определяют набор атрибутов, которые объект будет иметь, ограничивая создание других атрибутов. Это уменьшает потребление памяти и ускоряет доступ к атрибутам, поскольку Python не создаёт словарь атрибутов для каждого экземпляра. 🛠Создание slots: Для использования slots в классе, нужно определить атрибут slots с кортежем или списком имен атрибутов.

class Point:
⠀⠀__slots__ = ('x', 'y')

⠀⠀def __init__(self, x, y):
⠀⠀⠀⠀self.x = x
⠀⠀⠀⠀self.y = y
Этот код создаст класс Point, объекты которого могут иметь только атрибуты x и y. 🚫Когда slots не подходят: - Необходимость динамического добавления новых атрибутов к экземплярам после их создания. - Использование в классах, предназначенных для наследования (потомки Point без своих slots: ⠀получат обычный словарь атрибутов). - Классы, использующие некоторые специфичные для Python возможности (например, слабые ссылки). 💃Пример с наследованнием:

class ColorPoint(Point):
⠀⠀__slots__ = ('color',) # Добавляем атрибут color

⠀⠀def __init__(self, x, y, color):
⠀⠀⠀⠀super().__init__(x, y)
⠀⠀⠀⠀self.color = color

# Создание объекта
cp = ColorPoint(1, 2, 'red')
Этот пример демонстрирует, как можно расширить класс с slots добавив новые атрибуты через наследование. ⛔️Заключение: slots - мощный инструмент для оптимизации классов в Python, но его использование должно быть обдуманным из-за ограничений и потенциальных подводных камней. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
А теперь, внимание, решение:
f = lambda n: n * f(n - 1) if n > 1 else 1
🤔 Python достаточно умен что бы понять на что ссылается внутренний "f". В ином случае вы можете использовать "walrus operator":
(f := lambda n: n * f(n - 1) if n > 1 else 1)(x)
😉 Используя этот код, вы можете вычислить факториал любого числа. Например:
print(f(5))
# Вывод: 120

print(f(3))
# Вывод: 6
🥱 Этот уникальный пример показывает, насколько гибким и мощным может быть Python, позволяя создавать мощные решения в компактной форме. 😱Важно помнить, что хотя такие трюки и впечатляют, читаемость и понимание кода остаются приоритетами. Используйте эту магию с умом! 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Забавные факты о Python: однострочные чудеса 🤯 🪄Есть стереотип, что из-за синтаксиса Python каждый алгоритм будет занимать много места и строк. Но что, если я скажу вам, что в современных версиях Python можно создать сложные алгоритмы всего в одну строку? Да, даже самые неожиданные решения могут быть эффективно сжаты без потери читаемости (ну, почти без потерь 😅). 📈Сегодня мы научимся создавать рекурсивный калькулятор факториала, демонстрируя эту необычную возможность Python! 🫣Прежде чем мы раскроем ответ, давайте посмотрим на примеры, как наш таинственный калькулятор должен работать: - Факториал 3 (`3!`) равен 3 * 2 * 1 = 6. - Факториал 5 (`5!`) равен 5 * 4 * 3 * 2 * 1 = 120. 🤔Задание-викторина! Если вы готовы попробовать себя, вот ваш шанс и подсказки: 1) Используйте лямбда-функции 2) Примените оператор присваивания (walrus operator), чтобы вызвать лямбду на той же строке 3) Передайте лямбду самой себе, чтобы реализовать рекурсию 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Магические методы для операций с числами [Часть 3] 0️⃣ Работая с числовыми типами данных в Python, магические методы, такие к
Магические методы для операций с числами [Часть 3] 0️⃣ Работая с числовыми типами данных в Python, магические методы, такие как add, sub, mul, предоставляют мощные инструменты для кастомизации поведения ваших объектов при использовании арифметических операторов. ➕Метод add позволяет определить поведение для операции сложения с использованием оператора +. Это открывает двери для создания объектов, которые могут взаимодействовать друг с другом через математические операции.

class Money:
  def __init__(self, amount):
    self.amount = amount
    
  def __add__(self, other):
    return Money(self.amount + other.amount)
➖Аналогично, sub определяет поведение для операции вычитания (`-`), позволяя создавать выражения, где объекты могут быть уменьшены на значение другого объекта.

  def __sub__(self, other):
    return Money(self.amount - other.amount)
🫣 Метод mul используется для определения поведения умножения (`*`), что делает возможным умножать ваши объекты на числа или на другие объекты, предоставляя ещё большую гибкость.

  def __mul__(self, multiplier):
    if isinstance(multiplier, (float, int)):
      return Money(self.amount * multiplier)
    else:
      raise ValueError("Multiplier must be a number")
🫡 Эти методы значительно расширяют возможности объектно-ориентированного программирования в Python, позволяя объектам вести себя как встроенные числовые типы. Таким образом, вы можете создавать более сложные и выразительные абстракции, сохраняя при этом чистоту и простоту вашего кода. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Dataclasses [Часть 2] 🚀Метод post_init и начало работы с полями: После инициализации объекта dataclass с помощью метода init
Dataclasses [Часть 2] 🚀Метод post_init и начало работы с полями: После инициализации объекта dataclass с помощью метода init, можно дополнительно настроить объект с помощью метода post_init. Это особенно полезно, когда необходима дополнительная логика после создания объекта.
from dataclasses import dataclass

@dataclass
class Product:
⠀⠀name: str
⠀⠀price: float
⠀⠀discount: float = 0.0
⠀⠀final_price: float = 0.0

⠀⠀def __post_init__(self):
⠀⠀⠀⠀self.final_price = self.price - (self.price * self.discount)
😉В этом примере, после инициализации объекта Product, метод post_init автоматически рассчитывает final_price с учетом скидки. Это позволяет эффективно управлять данными объекта сразу после его создания. 💃Работа с полями в dataclasses также предоставляет мощные возможности для управления атрибутами. Одним из таких инструментов является параметр init=False, который позволяет определить поля, исключенные из автоматически сгенерированного метода init. Эти поля могут быть инициализированы внутри post_init или оставлены для последующего определения.
@dataclass
class Example:
⠀⠀fixed_value: int = 0
⠀⠀runtime_value: int = field(init=False)

⠀⠀def __post_init__(self):
⠀⠀⠀⠀self.runtime_value = self.fixed_value * 10
🛠В примере выше, runtime_value не будет требоваться при создании объекта Example, но будет автоматически рассчитан в методе post_init. 🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Магические методы для работы с коллекциями [Часть 2] 💃Магические методы делают работу с коллекциями в Python не только эффек
+1
Магические методы для работы с коллекциями [Часть 2] 💃Магические методы делают работу с коллекциями в Python не только эффективной, но и интуитивно понятной. С помощью методов getitem, setitem, и len вы можете управлять поведением объектов как если бы они были списками или словарями. 📊Метод getitem позволяет вашему классу поддерживать доступ к элементам с использованием квадратных скобок. Это полезно для создания кастомных коллекций.

class Shelf:
⠀⠀def __init__(self, items):
⠀⠀⠀⠀self._items = items
    
⠀⠀def __getitem__(self, i):
⠀⠀⠀⠀return self._items[i]
😴Аналогично, setitem дает возможность назначать значения элементам коллекции через квадратные скобки.

⠀⠀def __setitem__(self, i, value):
⠀⠀⠀⠀self._items[i] = value
🔢Метод len позволяет объекту поддерживать функцию len(), возвращая размер коллекции.

⠀⠀def __len__(self):
⠀⠀⠀⠀return len(self._items)
🔄Эти методы превращают ваши классы в полноценные коллекции, что упрощает манипуляцию данными и делает код более читаемым и естественным для Python разработчиков. 🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Repost from ITDEAL
🚀 Ищем Разработчика! 👨‍💼 Специалист по разработке ПО, который знает Python. Нас инетресует Middle специалист. Требования к
🚀 Ищем Разработчика! 👨‍💼 Специалист по разработке ПО, который знает Python. Нас инетресует Middle специалист. Требования к знаниям: ➡️ Python 3.9+ ➡️ aiogram 3.0 ➡️ asyncio ➡️ aiohttp ➡️ postgresql ➡️ docker ➡️ docker compose ➡️ SQL / noSQL ➡️ sqlalchemy ➡️ alembic ➡️ typing ➡️ Портфолио ➡️ 18+ ➡️ ООП ➡️ Коммуникабельность ➡️ Умение работать в команде ➡️ Ответственность ➡️ Умение воспринимать большие нагрузки 👨‍💼 Оклад от 800$ и выше 🤖 Контакты @lunasantrope

ITDEAL
1 198
Введение в магические методы [Часть 1] 🧙‍♀️Магические методы в Python, часто называемые "dunder" методами (от "double underscore"), играют ключевую роль в реализации внутреннего поведения объектов. Их название всегда начинается и заканчивается двумя символами подчеркивания. Например, __init__ для инициализации объектов. 🍀Примером магического метода, который мы используем ежедневно, является init, позволяющий определить начальное состояние объекта.
class Book:
⠀⠀def __init__(self, title, author):
⠀⠀⠀⠀self.title = title
⠀⠀⠀⠀self.author = author
👌 Другой интересный пример - str и repr которые определяют, как объект будет представлен в строковом формате. Это особенно полезно для отладки и логирования.
⠀⠀def __str__(self):
⠀⠀⠀⠀return f"{self.title} by {self.author}"

⠀⠀def __repr__(self):
⠀⠀⠀⠀return f"Book({self.title!r}, {self.author!r})"
💼 Магические методы также позволяют объектам вести себя как коллекции или изменять их поведение при выполнении арифметических операций. Например, getitem позволяет обращаться к элементам коллекции с использованием синтаксиса obj[key]. 🫸 Использование магических методов позволяет разработчикам создавать гибкие и интуитивно понятные интерфейсы для своих классов, облегчая работу с объектами и повышая читаемость кода. 🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Dataclasses [Часть 1] 😈 Введение в dataclasses: Python предлагает мощный механизм для упрощения работы с классами данных - м
Dataclasses [Часть 1] 😈 Введение в dataclasses: Python предлагает мощный механизм для упрощения работы с классами данных - модуль dataclasses. Этот инструмент позволяет автоматически добавлять специальные методы в классы: __init__, __repr__, __eq__, и другие, основываясь на аннотациях типов полей класса.

from dataclasses import dataclass
⠀
@dataclass
class Point:
⠀⠀x: int
⠀⠀y: int
👆 В этом примере мы определили класс Point с помощью декоратора @dataclass, который автоматически добавляет методы __init__ и __repr__, упрощая создание экземпляров и их отображение. 💡 Почему это важно? Использование dataclasses позволяет сократить количество шаблонного кода, улучшить читаемость и сделать код более декларативным. Вы определяете структуру данных, а Python заботится о реализации методов. 😳Давайте рассмотрим подробнее, как создать экземпляр класса Point и какие методы автоматически генерируются:

point = Point(10, 20)
print(point)
📌 В результате мы получаем экземпляр класса Point, который можно легко выводить на печать, благодаря автоматически сгенерированному методу __repr__. ❤️‍🔥 Dataclasses представляют собой мощный инструмент для работы с данными в Python, облегчающий создание классов для хранения данных без необходимости писать многословный код. 🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
Оператор "Морж" (Walrus Operator) 💃Оператор "Морж" (`:=`), введённый в Python 3.8, представляет собой мощный инструмент для
Оператор "Морж" (Walrus Operator) 💃Оператор "Морж" (`:=`), введённый в Python 3.8, представляет собой мощный инструмент для сокращения кода и улучшения его читаемости. Этот оператор позволяет назначать значения переменным внутри выражений, что особенно полезно в условиях, циклах и списках. 💡 Рассмотрим пример использования в условии. Вместо того, чтобы вызывать функцию дважды для проверки и получения значения, можно сделать это один раз:

if (n := len(a)) > 10:
    print(f"Список слишком длинный, {n} элементов")
🔄 Этот оператор также идеально подходит для циклов, позволяя упростить код при работе с итераторами:

while (line := input("Введите что-нибудь: ")) != "стоп":
    print(f"Вы ввели {line}")
✏️В списковых включениях оператор "Морж" может быть использован для фильтрации элементов без необходимости повторного вычисления:

numbers = [0, 1, 2, 3, 4]
squared_even_numbers = [n2 for n in numbers if (n2 := n ** 2) % 2 == 0]
🔍 Для демонстрации более сложного применения, давайте рассмотрим использование в условной логике с множественными if/elif (картинка "code 1"). 📊Оператор "Морж" значительно упрощает код, делая его не только короче, но и более читаемым. Используйте его, чтобы сделать свои программы более эффективными и понятными. 🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈Mentor Service

ITDEAL
1 198
QUIZ: Что выведет данный код? print(-~1)
Anonymous voting

ITDEAL
1 198
Итераторы и генераторы [Часть 2] 💃 В повседневной работе мы часто сталкиваемся с генераторами, даже не задумываясь об этом.
Итераторы и генераторы [Часть 2] 💃 В повседневной работе мы часто сталкиваемся с генераторами, даже не задумываясь об этом. Например, функция range() в Python - это классический генератор, который позволяет эффективно генерировать последовательность чисел.

for i in range(5):
    print(i)
🛠 Вместо того, чтобы создавать списки, попробуйте использовать генераторы для обработки данных. Генераторы занимают меньше памяти и работают быстрее, так как обрабатывают элементы последовательно.

# Список
numbers_list = [x * 2 for x in range(10)]

# Генератор
numbers_gen = (x * 2 for x in range(10))
🔄 Один из продвинутых инструментов генераторов - метод send(), который позволяет отправлять значение обратно в генератор. Это открывает возможности для интерактивного взаимодействия с генератором.

def counter():
    n = 0
    while True:
        received = yield n
        if received is not None:
            n = received
        else:
            n += 1

gen = counter()
print(next(gen)) 
> 0
print(gen.send(10))
> 10
print(next(gen))
> 11
📊 Сравнение производительности: В изображении вы найдете бенчмарк, демонстрирующий разницу в производительности между простой функцией с использованием генератора и без него. 😴 Генераторы - мощный инструмент для эффективной работы с данными. Используйте их, чтобы сэкономить память и время выполнения программ. 🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈Mentor Service