Введение в магические методы [Часть 1]
🧙♀️ Магические методы в Python, часто называемые "dunder" методами (от "double underscore"), играют ключевую роль в реализации внутреннего поведения объектов. Их название всегда начинается и заканчивается двумя символами подчеркивания. Например,
🍀 Примером магического метода, который мы используем ежедневно, является init, позволяющий определить начальное состояние объекта.
👌 Другой интересный пример - str и repr которые определяют, как объект будет представлен в строковом формате. Это особенно полезно для отладки и логирования.
💼 Магические методы также позволяют объектам вести себя как коллекции или изменять их поведение при выполнении арифметических операций. Например, getitem позволяет обращаться к элементам коллекции с использованием синтаксиса
🫸 Использование магических методов позволяет разработчикам создавать гибкие и интуитивно понятные интерфейсы для своих классов, облегчая работу с объектами и повышая читаемость кода.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
__init__ для инициализации объектов.class Book:
⠀⠀def __init__(self, title, author):
⠀⠀⠀⠀self.title = title
⠀⠀⠀⠀self.author = author
⠀⠀def __str__(self):
⠀⠀⠀⠀return f"{self.title} by {self.author}"
⠀⠀def __repr__(self):
⠀⠀⠀⠀return f"Book({self.title!r}, {self.author!r})"
obj[key].Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1
Forwarded from ITDEAL
Требования к знаниям:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤1
Магические методы для работы с коллекциями [Часть 2]
💃 Магические методы делают работу с коллекциями в Python не только эффективной, но и интуитивно понятной. С помощью методов getitem, setitem, и len вы можете управлять поведением объектов как если бы они были списками или словарями.
📊 Метод getitem позволяет вашему классу поддерживать доступ к элементам с использованием квадратных скобок. Это полезно для создания кастомных коллекций.
😴 Аналогично, setitem дает возможность назначать значения элементам коллекции через квадратные скобки.
🔢 Метод len позволяет объекту поддерживать функцию len(), возвращая размер коллекции.
🔄 Эти методы превращают ваши классы в полноценные коллекции, что упрощает манипуляцию данными и делает код более читаемым и естественным для Python разработчиков.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
class Shelf:
⠀⠀def __init__(self, items):
⠀⠀⠀⠀self._items = items
⠀⠀def __getitem__(self, i):
⠀⠀⠀⠀return self._items[i]
⠀⠀def __setitem__(self, i, value):
⠀⠀⠀⠀self._items[i] = value
⠀⠀def __len__(self):
⠀⠀⠀⠀return len(self._items)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3
Dataclasses [Часть 2]
🚀 Метод post_init и начало работы с полями: После инициализации объекта dataclass с помощью метода init, можно дополнительно настроить объект с помощью метода post_init. Это особенно полезно, когда необходима дополнительная логика после создания объекта.
😉 В этом примере, после инициализации объекта
💃 Работа с полями в dataclasses также предоставляет мощные возможности для управления атрибутами. Одним из таких инструментов является параметр
🛠 В примере выше,
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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 с учетом скидки. Это позволяет эффективно управлять данными объекта сразу после его создания.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.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3❤2
Магические методы для операций с числами [Часть 3]
0️⃣ Работая с числовыми типами данных в Python, магические методы, такие как add, sub, mul, предоставляют мощные инструменты для кастомизации поведения ваших объектов при использовании арифметических операторов.
➕ Метод add позволяет определить поведение для операции сложения с использованием оператора
➖ Аналогично, sub определяет поведение для операции вычитания (`-`), позволяя создавать выражения, где объекты могут быть уменьшены на значение другого объекта.
🫣 Метод mul используется для определения поведения умножения (`*`), что делает возможным умножать ваши объекты на числа или на другие объекты, предоставляя ещё большую гибкость.
🫡 Эти методы значительно расширяют возможности объектно-ориентированного программирования в Python, позволяя объектам вести себя как встроенные числовые типы. Таким образом, вы можете создавать более сложные и выразительные абстракции, сохраняя при этом чистоту и простоту вашего кода.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
+. Это открывает двери для создания объектов, которые могут взаимодействовать друг с другом через математические операции.
class Money:
def __init__(self, amount):
self.amount = amount
def __add__(self, other):
return Money(self.amount + other.amount)
def __sub__(self, other):
return Money(self.amount - other.amount)
def __mul__(self, multiplier):
if isinstance(multiplier, (float, int)):
return Money(self.amount * multiplier)
else:
raise ValueError("Multiplier must be a number")
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🌭2
Забавные факты о Python: однострочные чудеса 🤯
🪄 Есть стереотип, что из-за синтаксиса Python каждый алгоритм будет занимать много места и строк. Но что, если я скажу вам, что в современных версиях Python можно создать сложные алгоритмы всего в одну строку? Да, даже самые неожиданные решения могут быть эффективно сжаты без потери читаемости (ну, почти без потерь 😅 ).
📈 Сегодня мы научимся создавать рекурсивный калькулятор факториала, демонстрируя эту необычную возможность Python!
🫣 Прежде чем мы раскроем ответ, давайте посмотрим на примеры, как наш таинственный калькулятор должен работать:
- Факториал 3 (`3!`) равен
- Факториал 5 (`5!`) равен
🤔 Задание-викторина! Если вы готовы попробовать себя, вот ваш шанс и подсказки:
1)Используйте лямбда-функции
2)Примените оператор присваивания (walrus operator), чтобы вызвать лямбду на той же строке
3)Передайте лямбду самой себе, чтобы реализовать рекурсию
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
- Факториал 3 (`3!`) равен
3 * 2 * 1 = 6.- Факториал 5 (`5!`) равен
5 * 4 * 3 * 2 * 1 = 120.1)
2)
3)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🗿1
А теперь, внимание, решение:
🤔 Python достаточно умен что бы понять на что ссылается внутренний "f". В ином случае вы можете использовать "walrus operator":
😉 Используя этот код, вы можете вычислить факториал любого числа. Например:
🥱 Этот уникальный пример показывает, насколько гибким и мощным может быть Python, позволяя создавать мощные решения в компактной форме.
😱 Важно помнить, что хотя такие трюки и впечатляют, читаемость и понимание кода остаются приоритетами. Используйте эту магию с умом!
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
f = lambda n: n * f(n - 1) if n > 1 else 1
(f := lambda n: n * f(n - 1) if n > 1 else 1)(x)
print(f(5))
# Вывод: 120
print(f(3))
# Вывод: 6
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🤔1
__slots__ в Python 🐍
🔤 Предназначение slots: slots определяют набор атрибутов, которые объект будет иметь, ограничивая создание других атрибутов. Это уменьшает потребление памяти и ускоряет доступ к атрибутам, поскольку Python не создаёт словарь атрибутов для каждого экземпляра.
🛠 Создание slots: Для использования slots в классе, нужно определить атрибут slots с кортежем или списком имен атрибутов.
Этот код создаст класс
🚫 Когда slots не подходят:
- Необходимость динамического добавления новых атрибутов к экземплярам после их создания.
- Использование в классах, предназначенных для наследования (потомки Point без своих slots:
⠀получат обычный словарь атрибутов).
- Классы, использующие некоторые специфичные для Python возможности (например, слабые ссылки).
💃 Пример с наследованнием:
Этот пример демонстрирует, как можно расширить класс с slots добавив новые атрибуты через наследование.
⛔️ Заключение: slots - мощный инструмент для оптимизации классов в Python, но его использование должно быть обдуманным из-за ограничений и потенциальных подводных камней.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
class Point:
⠀⠀__slots__ = ('x', 'y')
⠀⠀def __init__(self, x, y):
⠀⠀⠀⠀self.x = x
⠀⠀⠀⠀self.y = y
Этот код создаст класс
Point, объекты которого могут иметь только атрибуты x и y.- Необходимость динамического добавления новых атрибутов к экземплярам после их создания.
- Использование в классах, предназначенных для наследования (потомки 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 добавив новые атрибуты через наследование.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3❤2
QUIZ: Что из этого НЕ является правдивым фактом о декораторах?
Anonymous Quiz
43%
Декораторы могут быть только функциями
31%
Декораторы можно применять на функции и классы
26%
На одну функцию можно применить несколько декораторов
❤4🤔3
Декораторы в Python [Часть 1]
🥱 Зачем нужны декораторы? В Python декораторы — это мощный инструмент, позволяющий изменять поведение функций и методов. Они обеспечивают простой способ добавления функциональности к существующему коду, не изменяя его напрямую.
🛠 Как работают декораторы? Декоратор в Python — это вызываемый объект (callable), который принимает другой вызываемый объект и возвращает любой объект (не обязательно вызываемый). Это значительно расширяет возможности декораторов по сравнению с простым изменением функций.
🔍 В этом примере
🌐 Эта особенность делает декораторы важным инструментом в арсенале разработчика Python, позволяя адаптировать функциональность к различным сценариям использования.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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 быть чрезвычайно гибкими.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤝1
🚀🌐 ВАКАНСИЯ: 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
Привет, фронтенд гуру! 👋
Мы расширяем нашу команду и ищем опытного Middle FrontEnd Developer, готового воплощать в жизнь самые смелые идеи наших проектов! 🚀
Требования к кандидату:
Будет плюсом:
Софт-скилы:
Please open Telegram to view this post
VIEW IN TELEGRAM
💘2
Декораторы в Python [Часть 2]
📈 Создание функциональных декораторов. Основная идея функционального декоратора заключается в том, чтобы расширить поведение функции без её изменения. Декоратор принимает функцию как аргумент и возвращает новую функцию, добавляя к ней дополнительную функциональность.
🛠 Пример создания декоратора:
💡 В этом примере, декоратор
🤔 Параметризированные декораторы. Иногда требуется большая гибкость, чем предоставляет простой декоратор. В таких случаях можно создать декоратор с параметрами:
😎 Использование функциональных декораторов позволяет разработчикам Python легко расширять и модифицировать поведение функций, что делает код более читаемым, эффективным и организованным.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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' три раза
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5💋2
🚀🌐 ВАКАНСИЯ: 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
Привет, Python мастер! 👋
Мы ищем опытного Middle Python Developer, готового внести свой вклад в разработку увлекательных проектов! 🚀
Требования к кандидату:
Требования к софт-скиллам:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤩1💯1
Декораторы в Python [Часть 3]
🔝 Декораторы классов. В отличие от функциональных декораторов, которые модифицируют функции, декораторы классов предназначены для изменения или расширения функциональности классов. Они принимают класс в качестве аргумента и возвращают новый класс (как в случае с dataclass) или модифицированный исходный.
🛠 Пример создания декоратора класса:
😑 Этот пример демонстрирует, как декоратор класса может добавить новые атрибуты и методы к классу. Это особенно полезно для добавления функциональности ко всем экземплярам класса без изменения самого класса.
🤔 Использование декораторов классов может быть особенно полезным в таких случаях, как регистрация классов, проверка атрибутов, добавление новых методов или автоматическая сериализация.
🔄 Применение декораторов классов упрощает управление изменениями и повышает гибкость кода, позволяя разработчикам легко добавлять новую функциональность к существующим классам.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5
Декораторы в Python [Часть 4]
🫡 Накопление декораторов (Stacking Decorators). Накопление (или стекинг) декораторов позволяет применить несколько декораторов к одной функции, добавляя многоуровневую функциональность. При этом декораторы применяются последовательно, снизу вверх.
🛠 Пример стекинга декораторов:
🫣 В этом примере,
🤔 Порядок важен! Последовательность применения декораторов критична, поскольку влияет на конечный результат. Необходимо тщательно продумать порядок, чтобы избежать неожиданных результатов.
🔄 Стекинг декораторов увеличивает гибкость и мощность функционала декораторов, позволяя легко комбинировать различные модификации функций.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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. Это иллюстрирует, как стекинг позволяет комбинировать несколько декораторов для достижения сложной функциональности.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5
Декораторы в Python [Часть 5]
🤝 Реализация декораторов через классы. Вместо использования функций, декораторы могут быть реализованы с помощью классов. Это добавляет гибкость в создание декораторов, позволяя использовать состояние объекта для управления поведением.
🛠 Пример классового декоратора:
🥰 В этом примере класс
🤔 Использование классов для создания декораторов позволяет сохранять состояние между вызовами, что открывает дополнительные возможности для мониторинга и других задач.
🔄 Классовые декораторы предлагают мощный инструмент для расширения функциональности, сохраняя при этом читаемость и поддерживаемость кода.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
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 и печатает сообщение.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3❤2
🚀🌐 ВАКАНСИЯ: 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
Привет, Python мастер! 👋
Мы ищем опытного Middle Python Developer, готового внести свой вклад в разработку увлекательных проектов! 🚀
Требования к кандидату:
Требования к софт-скиллам:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍2
QUIZ: Что выведет данный код:
print(*2* "Py", sep=",")
print(*2* "Py", sep=",")
Anonymous Quiz
39%
Py,Py
10%
P,,y
32%
P,y,P,y
19%
Py,Py
❤3
functools и lru_cache [Часть 1]
🔍 Модуль functools в Python предоставляет инструменты для работы с функциями высшего порядка, то есть функциями, которые действуют на другие функции или возвращают их в качестве результатов. Этот модуль помогает сократить код и улучшить его читаемость.
📦 Одной из замечательных особенностей functools является декоратор lru_cache. Он позволяет сохранять результаты дорогих по времени вычислений функций, чтобы при последующих вызовах с теми же аргументами возвращать сохраненный результат, избегая повторного вычисления.
🔗 Использование lru_cache идеально подходит для функций с дорогими вычислениями и повторяющимися входными данными.
🚀 Применение lru_cache улучшает производительность за счет уменьшения количества необходимых вычислений, что делает его мощным инструментом в арсенале любого Python-разработчика.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
from functools import lru_cache
@lru_cache(maxsize=32)
def expensive_func(num):
⠀⠀print(f"Вычисляется для: {num}")
⠀⠀return num * num # Просто пример, представьте здесь дорогое вычисление
maxsize определяет, сколько последних вызовов будет сохранено. Если maxsize установлено как None, кэш будет неограниченным. Однако помните, что это может привести к значительному использованию памяти.Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6❤1
5 команд Python, которые упростят вашу жизнь [Спецвыпуск]
🎉 Иногда мы все нуждаемся в небольшом перерыве от серьезных тем. Сегодня я поделюсь пятью командами Python, которые должны облегчить вашу жизнь разработчика, особенно если они вам еще не знакомы.
🔍 dir() - показывает все методы и атрибуты объекта. Отличный способ исследовать неизвестные библиотеки или объекты.
🔖 help() - предоставляет справку по модулям, функциям, классам. Неоценимый инструмент для изучения и отладки.
🥶 globals() - возвращает словарь текущего глобального символьного пространства. Это помогает понять, какие глобальные переменные активны в вашем коде.
📦 locals() - аналогично
〰️ zip() - объединяет элементы из нескольких итераторов (списков, кортежей). Создает пары или группы элементов, которые можно использовать в циклах.
🔝 PyBytes Media | ✉️ Telegram / 📷 Instagram / 📈 Mentor Service
🎉 Иногда мы все нуждаемся в небольшом перерыве от серьезных тем. Сегодня я поделюсь пятью командами Python, которые должны облегчить вашу жизнь разработчика, особенно если они вам еще не знакомы.
globals(), но для локального пространства имен. Используйте его, чтобы увидеть переменные внутри функции или области видимости.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤨2😁1