28154
Обучающий канал по Python Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Python_per_month
❓Вы когда-нибудь хотели стать лучшей версией себя?
Применять SQLAlchemy эффективнее — быстрее, лучше, умнее!
23 декабря, 20:00 мск — открытый урок для Python-разработчиков.
📒Что делать, если методы, использующие SQLAlchemy и СУБД, тормозят? Когда оптимизация внутри SQLAlchemy — благо, а когда — беда? Как создать удобную панель администрирования поверх SQLAlchemy?
Спикер Дмитрий Панкрашов — ведущий разработчик в компании-партнере вендора СЭД «Директум».
🟢Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/SrB3/
Все участники открытого урока получат скидку на курс "Python Developer. Professional"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ inspect.getsource()
Метод inspect.getsource() из модуля inspect позволяет получить исходный код функции, класса или метода. Это полезно для анализа кода во время выполнения или создания инструментов для отладки и документации.
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Класс D наследуется от B и C. Вызов d.greet() ищет метод greet согласно MRO. Порядок поиска: D -> B -> C -> A. Поэтому вызывается метод greet из класса B.
⚙️ zip()
Функция zip() в Python используется для объединения нескольких итерируемых объектов (например, списков) в один итератор кортежей. Каждый кортеж содержит элементы, которые находятся на одинаковых позициях в исходных итерируемых объектах.
Python Learning 👩💻
⚙️ sys.intern()
В Python функция sys.intern() оптимизирует хранение строк, создавая их в единственном экземпляре в памяти (интернирование). Это ускоряет сравнение строк за счёт сравнения ссылок, а не их содержимого.
Python Learning 👩💻
⚙️ sys.setrecursionlimit()
В Python функция sys.setrecursionlimit() позволяет изменить максимальную глубину рекурсии. Это полезно для задач с глубокой рекурсией, таких как обход деревьев или выполнение сложных алгоритмов.
Python Learning 👩💻
❌ Антипаттерн недели: Использование изменяемых объектов по умолчанию
Использование изменяемых объектов (например, списков или словарей) в качестве значений по умолчанию для аргументов функции может привести к неожиданному поведению.
Значение по умолчанию ([]) создаётся один раз при определении функции и используется повторно для всех вызовов. Поэтому изменения сохраняются между вызовами функции.
✔️ Как исправить:
Используйте None и создавайте новый список внутри функции:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item(1)) # [1]
print(add_item(2)) # [2] — теперь всё работает правильно!
⚙️ inspect.signature()
В Python функция inspect.signature() из модуля inspect позволяет получать информацию о сигнатуре функций и методов. Это полезно для анализа кода во время выполнения, например, для отладки или динамического вызова функций.
Python Learning 👩💻
PyOxidizer
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
Python Learning 👩💻
⚙️ difflib.get_close_matches()
В Python функция difflib.get_close_matches() находит наиболее похожие строки из списка на основе заданного шаблона. Это удобно для реализации поиска, проверки орфографии или подсказок для ввода.
Python Learning 👩💻
❓ Вопрос на собеседовании
Что такое dataclass в Python, как работает параметр init=False и зачем он нужен?
Ответ ⬇️
dataclass — это декоратор из модуля dataclasses, который упрощает создание классов для хранения данных, автоматически генерируя методы, такие как __init__, __repr__, и __eq__. Параметр init=False позволяет исключить атрибут из автоматически сгенерированного конструктора __init__. Это полезно для атрибутов, которые не должны передаваться при создании экземпляра, например, для вычисляемых значений или внутренних данных.
Пример использования ⚙️
from dataclasses import dataclass, field
@dataclass
class Product:
name: str
price: float
discount: float = field(init=False) # Исключаем из __init__
def __post_init__(self):
self.discount = self.price * 0.1 # Вычисляем скидку после инициализации
# Создание экземпляра
item = Product(name="Laptop", price=1000)
print(item) # Product(name='Laptop', price=1000, discount=100.0)
🔒 Частное облако SpaceWeb — полный контроль и безопасность для вашего бизнеса
Создавайте изолированные среды для корпоративных приложений и данных. Наше частное облако сочетает максимальную безопасность, гибкость и легкость управления. Идеально подходит для тех, кто ценит конфиденциальность и защиту.
💼 Ваши данные — под надежной защитой, доступ к ним — в любое время, в любой точке мира.
Хотите узнать больше? Подпишитесь на канал SpaceWeb и будьте в курсе всех новинок в мире облачных технологий!
Реклама.ООО "СпейсВэб". ИНН: 7813376370 erid: 2VtzqwKzQ8h
⚙️ collections.ChainMap
В Python класс collections.ChainMap объединяет несколько словарей в одну структуру, позволяя искать ключи сразу во всех словарях. Это удобно для объединения настроек или конфигураций.
Python Learning 👩💻
⚙️ re.findall()
В Python функция re.findall() из модуля re находит все совпадения с заданным регулярным выражением в строке и возвращает их в виде списка. Это удобно для извлечения данных из текста.
Python Learning 👩💻
❓ Вопрос на собеседовании
Что такое контекстные переменные (contextvars) в Python, как они работают и где применяются?
Ответ ⬇️
Контекстные переменные (contextvars) — это механизм, введённый в Python 3.7, который позволяет хранить и изолировать данные для каждого потока выполнения. Они особенно полезны в асинхронных приложениях, где глобальные переменные могут быть небезопасны из-за возможного пересечения данных между задачами. В отличие от локальных переменных потоков (threading.local), contextvars работают корректно в асинхронных средах, таких как asyncio.
Пример использования ⚙️
import contextvars
import asyncio
# Создаём контекстную переменную
user_context = contextvars.ContextVar('user')
async def task(name):
user_context.set(name) # Устанавливаем значение
await asyncio.sleep(1) # Эмуляция асинхронной задачи
print(f"Текущий пользователь: {user_context.get()}")
async def main():
await asyncio.gather(task("
⚙️ sys.getsizeof()
Метод sys.getsizeof() позволяет узнать размер объекта в памяти, включая дополнительные данные, связанные с этим объектом. Это полезно для анализа потребления памяти в приложении.
Python Learning 👩💻
🌐Хотите создать веб-приложение, но не знаете, с чего начать?
📖На открытом уроке «Создание веб-приложения на Django за 1 час» вы сделаете первый шаг в мире веб-разработки. Мы начнём с идеи и за час создадим работающий проект.
⚙️Настроим окружение, создадим модель данных, разберёмся с админ-панелью и выведем результат на экран. Вы увидите, что программирование на Python — это просто, если за дело берутся профессионалы!
👉Присоединяйтесь 25 декабря в 20:00 мск и получите скидку🥳 на участие в большом курсе «Python Developer. Basic»: https://clck.ru/3FMMQR
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ Интересный факт о языке: Множественное присваивание
Множественное присваивание позволяет в одной строке присвоить значения сразу нескольким переменным. Также это позволяет легко обменивать значения между переменными без использования временной переменной.
Как это работает:• Справа от знака = создаётся кортеж значений.• Эти значения распаковываются и присваиваются переменным слева.
Python Learning 👩💻
❓ Вопрос на собеседовании
Что такое yield from в Python и как оно помогает при работе с большими наборами данных?
Ответ ⬇️
yield from используется для делегирования работы с подгенераторами в Python. Это позволяет "плоско" и эффективно обрабатывать вложенные данные, избегая лишних циклов и улучшая производительность.
Пример использования ⚙️
def flatten(nested_list):
for item in nested_list:
if isinstance(item, list):
yield from flatten(item) # Делегирует генерацию к вложенному списку
else:
yield item
nested_list = [1, [2, [3, 4], 5], 6]
for num in flatten(nested_list):
print(num)
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Функция generator возвращает 1 и 2 с помощью yield. При следующем вызове next(gen) выполняется return 3, вызывая StopIteration с атрибутом value равным 3. Это значение доступно через e.value.
Напоминаю, что у нас есть свой чат, где вы можете задать свой вопрос
/channel/Chat_for_Python
🤔 Как это работает? — Python: List Comprehension
List comprehension — это мощный способ создавать списки в Python одной строкой. Давайте разберём, как работает этот синтаксис.
➡️ Как это работает:• range(10) генерирует числа от 0 до 9.• Для каждого числа x из range(10) выполняется выражение x**2, которое возводит x в квадрат.• Результаты собираются в список squares.
Развернутый аналог:
squares = []
for x in range(10):
squares.append(x**2)
print(squares) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
⚙️ shutil.copy()
Функция shutil.copy() из модуля shutil позволяет копировать файлы из одного места в другое. Это удобно для работы с файлами и создания резервных копий.
Python Learning 👩💻
🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 16 - 17 декабря в 19:00 мск.
О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.
На вебинаре вы:
☑️ Самостоятельно напишете Telegram-бота в формате консольного приложения.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Изучите рекомендации по продолжению обучения и развитию карьеры Backend-разработчика на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.
🎁 Приятные бонусы - карта компетенций начинающего Python-разработчика и гайд «Как заговорить на сленге IT-специалистов» всем участникам интенсива!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8KMaNx
✅️ GitHub теперь в Telegram!
Подписывайтесь: @GitHub
⚙️ itertools.chain()
Функция itertools.chain() позволяет объединить несколько итерируемых объектов в один. Это полезно, когда нужно работать с несколькими списками или другими коллекциями без явной конкатенации.
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Список lst — изменяемый тип, и изменения внутри функции влияют на оригинальный объект, поэтому 4 добавляется к списку. Переменная n — неизменяемый тип (int), поэтому увеличение num на 1 не изменяет оригинальный n.
⚙️ collections.deque
В Python класс collections.deque предоставляет двустороннюю очередь с эффективным добавлением и удалением элементов с обоих концов. Это полезно для реализации очередей, стеков и буферов.
Python Learning 👩💻