🚫 Ловушка с аргументами *args и **kwargs без передачи дальше
В Python *args и **kwargs часто используются для гибкости, но ошибка — принимать их и не передавать дальше в базовые классы или функции. Это «глотает» параметры и может ломать поведение программы.
✔️ Всегда передавайте *args и **kwargs, если не уверены, что они вам не нужны.
Python Learning 👩💻
⚙️ itertools.starmap
itertools.starmap применяет функцию к элементам итерируемого объекта, распаковывая аргументы из кортежей. Это полезно для операций с несколькими аргументами без лямбд и циклов.
Python Learning 👩💻
⚙️ importlib.util.find_spec
importlib.util.find_spec позволяет узнать, можно ли импортировать модуль, не загружая его. Это полезно для проверки наличия зависимостей, динамической загрузки и построения систем плагинов.
Python Learning 👩💻
⚙️ secrets для генерации случайных чисел и символов
ℹ️ Хотя реализовать свои собственные функции кодирования сообщений может быть очень весело, они, вероятно, не будут соответствовать тем же стандартам, что и проверенные в боевых условиях функции в библиотеке secrets.
🗣️ Там вы найдёте всё необходимое для генерации случайных чисел и символов для самых сложных паролей, токенов безопасности и связанных с ними секретов.
🔗 Ссылочка на доку
Python Learning 👩💻
➡️ Использование подчеркивания в REPL
Вы можете получить результат последнего выражения в Python REPL с помощью оператора подчеркивания, например, в Python REPL это выглядит следующим образом:
>>> 3 * 3
9
>>> _ + 3
12
🗣️ Прием работает и в оболочке IPython.
Python Learning 👩💻
➡️ Ленивая инициализация атрибутов с помощью __getattr__
В Python можно реализовать ленивую инициализацию атрибутов объекта с помощью метода __getattr__.
🗣️ Это позволяет отложить вычисление и создание атрибутов до момента их первого обращения, что может быть полезно для оптимизации работы с ресурсозатратными данными.
Python Learning 👩💻
➡️ Создание цепочек вызовов методов с использованием класса-обертки
Цепочки вызовов позволяют вызывать несколько методов подряд на одном объекте, возвращая этот объект на каждом шаге. Это удобно для создания более читабельного и компактного кода.
🗣️ В этом примере класс Chainable позволяет создавать цепочки вызовов для выполнения арифметических операций. Методы add, multiply и subtract возвращают сам объект, что позволяет вызывать их последовательно, а метод result возвращает итоговое значение.
Python Learning 👩💻
➡️ Click — простой и мощный инструмент для создания CLI
Click — это библиотека Python, которая помогает быстро и просто создавать интерфейсы командной строки (CLI). Она обеспечивает удобное управление командами, параметрами и опциями, поддерживает создание вложенных команд и позволяет легко обрабатывать пользовательский ввод.
🗣 Если вы хотите создать CLI для своего Python-проекта с минимальными усилиями, Click — отличный выбор.
🔗 Ссылочка на доку
Python Learning 👩💻
➡️ FlashText — Быстрый поиск и замена строк
FlashText — это библиотека Python, которая позволяет быстро находить и заменять ключевые слова в строках. В отличие от стандартных методов поиска, таких как регулярные выражения, FlashText работает с целыми словами и значительно быстрее на больших текстах. Эта библиотека особенно полезна, если нужно обрабатывать огромные массивы текстовых данных.
🗣 FlashText — идеальный выбор для поиска и замены ключевых слов в текстах, когда производительность имеет ключевое значение.
🔗 Ссылочка на доку
Python Learning 👩💻
⚙️ Pympler для мониторинга и анализа памяти
ℹ️ Библиотека мониторит и анализирует память, которая используется при исполнении кода программ на Python. Инструмент находит ее избыточное потребление, утечки и другие баги.
🗣️ С помощью Pympler можно узнать все о размере и длительности процессов приложения на Python за время работы.
🔗 Ссылочка на доку
Python Learning 👩💻
Bidict
Bidict — это библиотека Python, предоставляющая двунаправленное отображение данных и связанные с ним функции для естественной работы с однозначными отношениями.
Python Learning 👩💻
➡️ Превращение функций в методы класса с помощью types.MethodType
types.MethodType — это способ динамического добавления функций в экземпляры класса как методы. Это позволяет создавать методы "на лету" и добавлять их в объекты, что может быть полезно в сложных сценариях, когда структура класса определяется динамически.
🗣️ В этом примере функция external_function добавляется в экземпляр класса MyClass как метод. Это позволяет вызывать её как обычный метод класса, используя атрибуты экземпляра.
Python Learning 👩💻
Библиотека python-decouple
Библиотека python-decouple для Python помогает отделить конфигурационные параметры от вашего исходного кода. Это означает, что вы можете хранить секретные данные, такие как ключи API, пароли и URL-адреса базы данных, вне вашего кода, улучшая безопасность.
Python Learning 👩💻
➡️ Использование функции itertools.tee() для дублирования итераторов
itertools.tee() — это интересная функция из модуля itertools, позволяющая создавать несколько независимых копий одного и того же итератора.
🗣️ Это полезно, когда вам нужно одновременно итерировать по одним и тем же данным в разных частях кода, не повторяя вычисления.
✔️ itertools.tee() делает работу с итераторами гибче и удобнее.
Python Learning 👩💻
🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра вечером
Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
➡️ Использование cachetools для кэширования в Python
cachetools — это небольшая, но мощная библиотека для кэширования, которая предоставляет различные стратегии кэширования, такие как LRU (Least Recently Used), LFU (Least Frequently Used) и другие. Она позволяет оптимизировать производительность, избегая повторных вычислений или запросов.
• cachetools полезна, когда требуется хранить временные результаты или промежуточные данные для повышения производительности.
🔗 Ссылочка на доку
Python Learning 👩💻
❓ Вопрос на собеседовании
Как в Python работают функции с переменным количеством аргументов (*args и **kwargs), и как это можно использовать для создания гибких функций?
Ответ ⬇️
Функции с *args принимают произвольное количество позиционных аргументов, а с **kwargs — именованных аргументов. Это позволяет передавать любое количество значений и делать интерфейс функций более гибким. *args упаковывает аргументы в кортеж, а **kwargs — в словарь.
Пример использования ⚙️
def demo_func(*args, **kwargs):
print("Позиционные аргументы:", args)
print("Именованные аргументы:", kwargs)
demo_func(1, 2, 3, name="Alice", age=25)
# Позиционные аргументы: (1, 2, 3)
# Именованные аргументы: {'name': 'Alice', 'age': 25}
Python Learning 👩💻
Почему Python — основной язык в offensive security?
Большинство задач в ИБ так или иначе упирается в скрипты: автоматизация, работа с сетью, парсинг, фаззинг, свои утилиты под конкретную инфраструктуру. Готовых инструментов часто недостаточно — нужен код, который можно написать и доработать под себя.
Python для Пентестера от Codeby — курс для тех, кто уже знает Python на базовом уровне и хочет применять его в информационной безопасности.
Что будет на курсе:
⏺️ООП и модули для работы с аргументами командной строки
⏺️работа с БД и файловой системой
⏺️многопоточность
⏺️сетевая работа на Python
⏺️фаззер, сканер портов, брутфорсер, парсер
⏺️криптография и работа с метаданными
⏺️разработка прикладного фреймворка
Формат обучения:
• 3,5 месяца / 112 ак. ч. (14 недель + 1 неделя на экзамен)
• ДЗ с ручной проверкой куратором
• итоговый дипломный проект на выбор
Запись на ближайший поток открыта до 16 июля. При оплате курса сразу — скидка 30%
➡️Успейте записаться
🪧Бесплатная консультация: @CodebyAcademyBot
⚙️ enumerate()
Когда тебе нужно итерировать по списку с доступом к индексу элемента, используй enumerate(). Эта встроенная функция возвращает и индекс, и сам элемент в одном цикле, что удобно и лаконично.
Python Learning 👩💻
🔥 Три разных человека. Три разных проекта. Один и тот же подход.
— Юра взял «скучную» нишу с готовым спросом → сначала печальные $100/мес, через год уже ~$10K/мес
— Денис сделал Telegram-игру в одиночку на основе AI → ~ $1500 за 1,5 месяца после запуска
— Аня без кода запустила AI-бота для изучения английского → первые ~$200 уже в 1 месяц
Разные результаты. Разный масштаб. Но общие правила:
1. не придумывать «гениальную идею», а брать существующий спрос
2. делать простой MVP и быстро запускаться
3. докручивать монетизацию и продукт по факту использования
Ребята сделали всё без команды, без инвестиций, а самое главное — без ожидания «идеального момента». Да, не у всех получается сразу. И не у всех выходит на $10K. Но если системно идти по схеме выше — появляется первый доход с продукта, а дальше уже есть что масштабировать.
В комьюнити разбираем такие кейсы регулярно: @its_capitan. Что сработало, что нет, и почему.
Реклама: ИП Зуев Игорь Владимирович, ИНН: 360408359441, Erid: 2VtzqwWTgtz
👩💻 Задача по Python
Создайте функцию find_longest_substring для поиска самой длинной подстроки в строке, содержащей уникальные символы. Функция должна возвращать длину этой подстроки.
Пример:
print(find_longest_substring("abcabcbb")) # Вернёт 3, т.к. самая длинная уникальная подстрока "abc"
print(find_longest_substring("bbbbb")) # Вернёт 1, т.к. самая длинная уникальная подстрока "b"
print(find_longest_substring("pwwkew")) # Вернёт 3, т.к. самая длинная уникальная подстрока
Решение задачи на картинке ☝
Python Learning 👩💻
Нейросеть, LLM (большие языковые модели) и ИИ-агент
Эти слова в разговорах часто используют как синонимы. Но за ними стоят разные механизмы, и от того, с чем вы работаете, зависит результат.
LLM генерирует текст на основе того, на чем ее обучили. Запускается только по запросу человека, работает в один цикл «промпт → ответ», между сессиями ничего не помнит и умеет ровно одно — писать текст. Как эрудированный консультант, который отвечает на вопросы.
ИИ-агент — автономная система. Получает цель, сам определяет шаги, обращается к внешним сервисам, запускает код, читает файлы, ищет в базе данных, сохраняет контекст и историю действий. Как сотрудник, который получил задачу и решает ее сам.
karpovꓸcourses выложили бесплатный гайд «Почему ваш ИИ пишет не то: LLM против ИИ-агента». В нем сравнение модели и агента по параметрам — память, доступные инструменты, реакция на ошибки, способ запуска — и схема цикла агента с разбором каждого шага.
Автор — Алексей Жиряков: 15+ лет в бэкенд-разработке, ex-Stream CTO KION, в Сбере отвечает за работу с данными для ИИ.
Заберите гайд и скидку 30% на платный воркшоп «AI-first разработка на Python» по ссылке
Срезы
Срезы (slices) в Python — это способ получения подстроки (подсписка) из последовательности, такой как строка (str), список (list) или кортеж (tuple).
Python Learning 👩💻
➡️ Memray — профилирование памяти для Python
Memray — это современный инструмент для профилирования памяти в Python, разработанный командой Bloomberg. Он позволяет детально отслеживать выделение и использование памяти в ваших приложениях, что помогает выявлять утечки и оптимизировать производительность.
• Глубокий анализ: Memray отслеживает все выделения памяти, включая те, что происходят в нативных расширениях на C/C++.
• Гибкие отчёты: Генерирует отчёты в виде текстовых файлов, графов и HTML-страниц для наглядного представления данных.
• Поддержка многопоточности: Корректно работает с многопоточными приложениями, обеспечивая точный анализ.
• Интеграция с Jupyter: Позволяет визуализировать данные профилирования прямо в Jupyter Notebook.
🔗 Ссылочка на доку
Python Learning 👩💻