Telegram Web Link
👍 Промпт для генерации юнит-тестов

Используйте следующий промпт для генерации юнит-тестов с помощью pytest:

💬 Промпт:
Please generate comprehensive unit tests for the following Python function using pytest.

Requirements:
1. Carefully analyze the function’s functionality, inputs, and outputs.
2. Generate unit tests that cover standard use cases and edge cases.
3. Ensure that the tests are clear, easy to understand, and well-organized.
4. Challenge potential inaccuracies with false outcomes, testing against possible mistakes.
5. Use assertions that test both expected outcomes and exception handling.

[insert function code here]


Что вы получите?
▪️ Полный набор юнит-тестов, охватывающих все аспекты функции.
▪️ Применение лучших практик тестирования.
▪️ Обеспечение надежности кода и упрощение отладки.

✔️ Пример:

Предположим, у нас есть функция, которая вычисляет факториал числа:
def factorial(n: int) -> int:
if n == 0 or n == 1:
return 1
return n * factorial(n-1)


Промпт позволит получить набор юнит-тестов для этой функции:
import pytest
from your_module import factorial

def test_factorial_base_case():
"""Проверка, что факториал 0 и 1 возвращает 1."""
assert factorial(0) == 1
assert factorial(1) == 1

def test_factorial_positive_integers():
"""Проверка факториала для положительных целых чисел."""
assert factorial(2) == 2
assert factorial(3) == 6
assert factorial(4) == 24
assert factorial(5) == 120

def test_factorial_large_number():
"""Проверка факториала для большего числа."""
assert factorial(10) == 3628800

def test_factorial_negative():
"""Проверка, что функция выбрасывает исключение для отрицательных чисел."""
with pytest.raises(ValueError):
factorial(-1)

def test_factorial_edge_case():
"""Проверка факториала для граничного случая."""
assert factorial(6) == 720


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥱94🔥4😢3
👍 Method Chainingэффективный код в одну строку

Метод чейнинг (method chaining) — техника вызова нескольких методов на одном объекте в одной строке, где каждый метод возвращает self, позволяя обходиться без промежуточных переменных.

🔹 Преимущества:

• Меньше кода — избавляет от промежуточных переменных.
• Читаемость — код выглядит как последовательность логичных операций.
• Элегантный дизайн — делает API удобным для использования.

🔹 Недостатки:

• Трудность отладки — если что-то сломается, сложно найти источник ошибки.
• Длинные цепочки — могут ухудшать читаемость, если используются чрезмерно.
• Жёсткая связь методов — изменения в классе могут затронуть всю цепочку.

🎯 Когда использовать Method Chaining:

• Трансформации данных — очистка текста, математические вычисления, работа с датафреймами.
• Формировании Fluent API — используется в pandas, jQuery и других библиотеках для удобного взаимодействия с объектами.

🏆 Лучшие практики использования:
• Возвращайте self правильно — убедитесь, что каждый метод возвращает объект, с которым ведется работа, а не новый объект.
• Читаемые цепочки — избегайте слишком длинных цепочек, которые трудно отлаживать.
• Обработка ошибок — добавьте обработку исключений, чтобы не прерывать выполнение кода в случае ошибки.
• Логичность — методы должны выполняться в последовательности, логичной для объекта.

🔹 Пример на Pandas:
import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
result = df.rename(columns={'Name': 'Full Name'}).sort_values(by='Age').reset_index(drop=True)
print(result)


🔹Пример на Flask:
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/')
def index():
return jsonify(message="Hello, World!").status_code(200)


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7😁1🥱1
🗣️ Истории подписчиков: как я получил первую работу

Каждому из нас когда-то приходилось начинать с нуля, и путь к первой работе разработчиком — это целый сериал эмоций: от сомнений до побед. Вспоминаем, как мы справлялись с трудностями и как наконец нашли свою первую работу.

😅 Вот моя история:
Когда я только начал осваивать Python, казалось, что программирование — это просто. Прочитал пару статей, написал скрипты, и вот ты уже почти профессионал! Но на собеседовании меня ждали реальные вызовы: задачи на логику, библиотеки, многозадачность... Я, конечно, не знал ответа на половину вопросов.

Но я не сдался! На интервью я признался, что не знаю всех ответов, но готов учиться. Мне дали тестовое задание. Потратил много времени, но в конце понял, что допустил элементарную ошибку с декоратором! Переписал, отправил, и через пару дней получил предложение о работе.

Этот опыт научил меня важному: не бойся признавать свои слабости, если ты готов учиться и расти.


А как вы получили свою первую работу? Делитесь в комментариях! 😁

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84😁3
🔥 PyGWalker: ускорьте анализ и визуализацию данных

PyGWalker — инструмент, который превращает pandas DataFrame в интерактивный интерфейс для визуального исследования данных.

🔹 Что он умеет?
• Интеграция с Jupyter Notebook.
• Визуализация данных с помощью drag-and-drop.
• Очистка и аннотация данных.
• Поддержка запросов на естественном языке.

💡 Если вы аналитик данных или исследователь, PyGWalker поможет вам быстрее анализировать данные и создавать наглядные отчёты без сложного кода.

🔗 Ссылка на репозиторий: https://clc.to/QjWKzg

Библиотека питониста #буст
👍12❤‍🔥2🔥1
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой

Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой.

Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.

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

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
Встречайте: мой код, во всей его красе 😆

Библиотека питониста #развлекалово
😁37👍4
6 слов, которые знакомы каждому Python-разработчику

Отложим кодинг и разомнём мозги с нашим небольшим кроссвордом. 💡

По горизонтали:
1. Функция, которая позволяет модифицировать поведение другой функции.

5. Область видимости переменных в коде.

По вертикали:
2. Расширение программы, которое обычно содержит библиотеки и файлы.

3. Способ выполнения асинхронных задач в Python.

4. Фреймворк для создания веб-приложений.

6. Пакетный менеджер для установки Python-библиотек.

Делитесь своими ответами в комментариях 👇

Прячем ответы под спойлер, даём шанс угадать всем.

Библиотека питониста #междусобойчик
👍74🥱1
🐍 Python новости

🚀 Релизы и инструменты:
Django 5.2 RC1 — последний шанс протестировать новые функции перед релизом.
Unvibe — новый Python-инструмент для генерации кода из unit-тестов.
Marimo — переосмысление ноутбуков как переиспользуемых Python-программ.

🔬 Глубже в Python:
Operationalizing Python — почему Python становится трудно поддерживаемым.
Weakref в Python — руководство по слабым ссылкам.

📚 Обучение и лучшие практики:
100 самых популярных Python-докладов 2024 года.
5 листингов для лучшего понимания Python.
Генерация синтетических данных в Python.

🔧 DevOps и безопасность:
Иерархия контроля в DevOps — как защитить прод от ошибок разработчиков.

Библиотека питониста #свежак
👍43🔥1
🤔 Почему не стоит использовать изменяемые объекты как параметры по-умолчанию?

В Python не рекомендуется использовать изменяемые объекты в качестве значений параметров по умолчанию по следующим причинам:

— Значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.

— Если использовать изменяемый объект (список, словарь), то изменения в нем будут сохраняться между вызовами функции. Это может привести к неочевидному поведению и трудноуловимым ошибкам при многократном вызове функции.

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


Библиотека собеса по Python
👍148❤‍🔥2👏1
Что выведет код сверху?

👾 — ypyP 1
👍 — ypyP 3
🥰 — y 3
⚡️ — y1

Библиотека задач по Python
🥰91👍21👾202
📈 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии

Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.

👉 Читать полный анализ: https://proglib.io/sh/NbJAHIDRTg

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍21🌚1
🏗 Управление памятью в Python: как это работает

Python сам выделяет и очищает память, чтобы вы не думали о байтах и указателях. Но иногда автоматике стоит помочь.

1. Python управляет памятью автоматически

Когда вы пишете x = [1, 2, 3], Python не заставляет вас думать о байтах и указателях. Он сам выделяет память, отслеживает объекты и убирает мусор. Всё это делает менеджер памяти, который хранит:

▪️ Тип данных (int, list, dict)
▪️ Счетчик ссылок (кто использует объект)
▪️ Значение (сами данные)

Такой подход удобен: нет «висячих указателей», не нужно вручную вызывать malloc/free, а ресурсы оптимизируются автоматически.

2. Счетчик ссылок

Каждый объект в Python — как воздушный шарик. Пока его кто-то держит (есть ссылки), он остается. Если все нити отпущены — объект исчезает.

Как это работает:
import sys

a = [1, 2, 3]
print(sys.getrefcount(a)) # 2 (одна ссылка в переменной + вызов функции)
b = a
print(sys.getrefcount(a)) # 3 (еще одна ссылка)
del a
print(sys.getrefcount(b)) # 2 (одна ссылка удалена)
b = None # Объект больше не используется → удален


💡Но есть нюансы: Python кэширует строки и мелкие числа (-5 до 256), поэтому их ссылки могут не изменяться.

3. Сборщик мусора

Если объекты ссылаются друг на друга, счетчик ссылок их не удалит. Например:
class Node:
def __init__(self):
self.parent = None

a = Node()
b = Node()
a.parent = b
b.parent = a # Циклическая ссылка!


Такие объекты удаляет сборщик мусора (Garbage Collector, GC), используя алгоритм поколений:

🍼 Поколение 0 — новые объекты, проверяются чаще.
🧑‍💼 Поколение 1 — пережили одну проверку.
🦖 Поколение 2 — «старожилы», проверяются реже.

Управление GC:
import gc
gc.collect() # Принудительный запуск
gc.set_threshold(700, 10, 10) # Настройка частоты очистки


💡 Совет: если у вас много циклических объектов, очищайте их вручную (gc.collect()).

4. Как оптимизировать память вручную

🔸 slots для уменьшения потребления памяти:
class User:
slots = ['name', 'age'] # Экономит до 40% памяти

def __init__(self, name, age):
self.name = name
self.age = age


🔸 Генераторы вместо списков:
 # Неоптимально:
lines = open("data.txt").readlines() #Весь файл в памяти!

# Оптимально:
def read_lines(filename):
with open(filename) as f:
for line in f:
yield line # Читаем по одной строке


🔸 Массивы вместо списков:
import array
numbers = array.array('i', [1, 2, 3, 4, 5]) # Числовой массив (экономия памяти)


🔸 Кэширование с lru_cache:
from functools import lru_cache

@lru_cache(maxsize=1000)
def compute(x):
return x 2 # Кэширует результаты функции


5. Как искать утечки памяти

🔸 Используем tracemalloc — показывает, где «утекает» память:
import tracemalloc

tracemalloc.start()
data = [x for x in range(10_000)] # Проблемный код

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print(top_stats[0]) # Где выделена память?


🔸 Визуализация с objgraph — рисует граф зависимостей:
import objgraph
objgraph.show_most_common_types(limit=5) # Какие объекты «размножаются»?


📌 Подробнее про управление памятью в Python: https://clc.to/SNaUtg

Библиотека питониста #буст
👍254❤‍🔥1
📊 Собес по Data Science: 10 вопросов, которые разделяют джунов от мидлов

Готовишься к интервью? Мы собрали 10 каверзных вопросов, которые любят задавать тимлиды. Здесь нет банальных задач — только те, на которых спотыкаются 80% кандидатов. Проверь себя и узнай, готов ли ты к следующему собесу!

💬 Пройти тест

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов

Кешировать нужно с умом. И нет, LRU — не серебряная пуля.

В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии

Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 reloading: перезагрузка кода без потери состояния

reloading — это удобный инструмент для Python, который позволяет автоматически перезагружать тело цикла или функцию из исходного кода на каждой итерации, не теряя состояние.

🔹 Когда полезно?

— При обучении нейросетей, когда нужно изменять код на лету без остановки процесса.
— Для добавления логов, сохранения модели, изменения статистики во время работы.
— В других сценариях, где требуется динамическое обновление кода.

Установка:
pip install reloading


🔹Как использовать?

Перезагрузка тела цикла перед каждой итерацией:
from reloading import reloading

for i in reloading(range(10)):
# этот код будет обновляться перед каждой итерацией
print(i)


Перезагрузка функции перед каждым вызовом:
from reloading import reloading

@reloading
def some_function():
# этот код будет обновляться перед каждым вызовом
pass


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82❤‍🔥1
Признавайтесь, кто уже заменил Stack Overflow на ChatGPT? 😏

Библиотека питониста #развлекалово
😁24💯9👏32👍1🥱1
🎧 Что послушать: обнаружение выбросов в данных с Python

В свежем выпуске Talk Python to Me обсуждают, как находить аномальные данные и использовать их для обнаружения мошенничества, неожиданных закономерностей и научных открытий.

Темы выпуска:
🎙️ Почему выбросы важны? Ошибки, инсайты и скрытые паттерны
🎙️ Методы обнаружения выбросов и их отличие от предсказания и кластеризации
🎙️ Практические кейсы и новые исследования

Если хотите научиться замечать аномалии и использовать их в своих проектах — этот выпуск для вас!

🔗 Слушать подкаст: https://clc.to/S3qK4Q

Библиотека питониста #буст
2👍2
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer

CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.

➡️ Читать статью

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤‍🔥11
🤖 IT-выживание 2025: как не вылететь с рынка труда в эпоху LLM

В 2025-м айтишникам приходится несладко: старые скиллы уже не в цене, LLM наступают на пятки, а работодатели хотят все и сразу.

👍 Делимся инсайдами, как выжить в новой реальности и не потерять работу в эпоху тотальной оптимизации.

👉 Ссылка на статью: https://proglib.io/sh/zEruLHxYno

Библиотека дата-сайентиста
👾4❤‍🔥2👍2🙏1💯1
2025/07/08 13:30:20
Back to Top
HTML Embed Code: