Библиотека питониста | Python, Django, Flask
40.4K subscribers
2.79K photos
75 videos
51 files
4.37K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
加入频道
💁 Как внедрить многоязычность в Telegram-бота оптимальным образом

Автор новой статьи на «Хабре» делится своим опытом создания многоязычного бота. Его целью было упростить процесс добавления новых языков и сделать это с минимумом затрат. Вот основные моменты:

▫️Следует избегать внесения текстов непосредственно в код бота. Весь текстовый контент организован через переменные, чтобы легко управлять языковыми версиями.
▫️Можно создать по словарю на каждый язык, в котором ключами будут названия переменных, а значениями — текст для интерфейса.

По мере развития бота проект перешёл на модульно-сервисную архитектуру. Как был решён вопрос с многоязычностью, читайте в статье 👈
👏10👍2🤔2
🐍Функции как объекты в Python

В Python функции являются объектами первого класса. Это означает, что они могут быть использованы так же, как и любые другие объекты. Их можно присваивать переменным, хранить в структурах данных, передавать в качестве аргументов другим функциям и возвращать в качестве значений из других функций.

✔️Пример ниже даёт понять сущность функций как объектов:


def factorial(n):
"""returns n!"""
return 1 if n<2 else n*factorial(n-1)

print(factorial(42)) # -> 1405006117752879898543142606244511569936384000000000
print(factorial.__doc__) # -> returns n!
print(type(factorial)) # -> <class 'function’>


▶️Следствием этого являются функции высшего порядка. Так называют функции, которые выполняют одно (или оба) из этих действий:
- принимают одну (и более) функций в качестве аргументов;
- возвращают функцию в качестве результата.
Вот пример:


def apply_twice(func, arg):
return func(func(arg))

def multiply_by_two(x):
return x * 2

result = apply_twice(multiply_by_two, 3)
print(result) # Выведет 12, так как (3 * 2) * 2 = 12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🤩43
📊Статистика на примерах с Python

Для работы с данными в Python чаще всего используют библиотеки NumPy, Pandas, Matplotlib, SciPy. Автор новой статьи на «Хабре» показывает полезные методы из этих библиотек на примере датасета Titanic. Вот, например, меры центральной тенденции в SciPy:

# превращение списка в массив NumPy и удаление всех nan
age_without_nan = age.to_numpy()
age_without_nan = age1[~np.isnan(age_without_nan)]
# вычисление моды
mode = scipy.stats.mode(age_without_nan)
print('Мода =', mode)
# вычисление медианы
median = scipy.ndimage.median(age_without_nan)
print('Медиана =', median)
# вычисление среднего
mean = scipy.mean(age_without_nan)
print('Среднее значение =', mean)


Ещё больше информации можно найти в статье 👈
👍152
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов

Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!

👇Ниже — мини-подборка из статьи 👇

📰 Новости

▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.

🛠 Инструменты

◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.

🤙 Сделай сам

🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.

🎓 Туториалы

🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3
Что выведет код с картинки выше?
Anonymous Quiz
39%
True
38%
False
15%
SyntaxError
7%
TypeError
🤔26😁9👍63
📁 Как правильно структурировать Python-проект

Какие функции выделить в отдельные модули? Как хранить данные? Что можно объединить и изолировать? Эти вопросы должны встать перед вами, если вы хотите сделать Python-проект, который можно будет легко масштабировать и тестировать.


Вот несколько советов:
▪️Подумайте о структуре репозитория.
Лучше, чтобы она не была запутанной и в ней мог разобраться сторонний человек. За образец предлагается взять это:
README.rst
LICENSE
setup.py
requirements.txt
sample/init.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py
▪️Н
е забудьте о структуре кода.
Признаками плохой структуры могут быть циклические зависимости, интенсивное использование глобального контекста, спагетти-код.

Больше подробностей о том, как улучшить проект, использовать импорты и декораторы, работать с типами данных — в статье 👈
👍203
🌳 Задача про вырубку деревьев

Фермер решил вырубить некоторые деревья, растущие перед его домом. Деревья перед домом посажены в ряд, всего там растёт n деревьев, расстояния между соседними деревьями одинаковы. После вырубки перед домом должно остаться m деревьев, и расстояния между соседними деревьями должны быть одинаковыми. Помогите фермеру выяснить, сколько существует способов вырубки деревьев.

Требуется написать программу, которая по заданным числам n и m определит, сколько существует способов вырубки некоторых из n деревьев так, чтобы после вырубки осталось m деревьев, и соседние деревья находились на равном расстоянии друг от друга. Выше на картинке показаны варианты для m = 5 и n = 3.

Пример ввода:
>> 125 25
Вывод:
>> 265

👇Попробуйте написать решение. Ответ опубликуем чуть позже.
👍13🔥1
🌳Решение задачи про вырубку деревьев

Обозначим расстояние между деревьями после вырубки d. Тогда существует n – d х (m – 1) – m + 1 способов вырубить деревья. Чтобы найти все варианты, нужно просуммировать способы по всем d. Кроме того, нужно учесть 2 частных случая – когда количество оставшихся после вырубки деревьев равно 0 или 1.

1️⃣ вариант:
n, m = list(map(int, input().split()))
trees = 0
if m == 0:
trees = 1
elif m == 1:
trees = n
else:
for d in range(1, n):
trees += (n - d) // (m - 1)
print(trees)

2️⃣ вариант:
n, m = map(int, input().split())
trees = 0
if m == 0:
trees = 1
elif m == 1:
trees = n
else:
for d in range(1, (n - 1) // (m - 1) + 1):
trees += n - (m - 1) * d
print(trees)


👉Ещё четыре олимпиадных задачи с решениями ищите в нашей статье👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁51
🛠 Модуль functools для манипуляций с функциями

Позволяет адаптировать или расширять функции без необходимости полностью их переписывать.

➡️Основной инструмент — метод partial, который возвращает новую функцию с частично применёнными аргументами и ключевыми словами, определёнными в оригинальной функции. Это полезно, если один или несколько аргументов постоянные.





from functools import partial

def multiply(x, y, z):
return x * y * z

# Создаём новую функцию, которая умножает значение на 2 и 3
multiply_by_6 = partial(multiply, 2, 3)

# Теперь, вызывая multiply_by_6 с одним аргументом, этот аргумент будет умножаться на 2 и 3
result = multiply_by_6(4) # -> 24


➡️Метод reduce() последовательно применяет некоторую функцию к элементам итерируемой последовательности. Он сводит этот итерируемый объект к единственному значению, накапливая результаты функции от пар элементов.



from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product) # Выведет 120, так как 1 * 2 * 3 * 4 * 5 = 120


#код
👍24
🐍 Создаём игру «Виселица» на Python. Часть 1. Командная строка

Осваиваем азы программирования на Python, разработав классическую игру «Виселица» с интерактивным интерфейсом и увлекательной геймплейной механикой.

🔗 Читать статью
👍23
🤔А как вам такой алгоритм сортировки?

Перевод: «ждёт, пока космическая солнечная радиация не проманипулирует битами и отсортирует список»

Комментарий от пояснительной бригады:
Шутка основана на явлении single-event upset (SEU). Это изменение состояния электронного компонента, вызванное частицей ионизирующего излучения. Оно происходит из-за возникновения свободного заряда, который появляется в результате ионизации внутри или рядом с логическим элементом, таким как бит памяти.

#memes
🔥20😁16👍5🤔2
Что такое Pickling и Unpickling?

Эти термины относятся к процессам сериализации и десериализации объектов.

▫️Pickling.
Модуль Pickle берёт любой Python-объект и конвертирует его в поток байтов. Этот процесс и называется pickling. Этот поток байтов может быть сохранён в файле или передан через сеть.
Пример:


import pickle
my_data = {'key': 'value', 'number': 42}
# Pickling (сериализация)
with open('data.pkl', 'wb') as file:
    pickle.dump(my_data, file)

▫️Unpickling.
Это обратный процесс, при котором поток байтов преобразуется обратно в объект Python.
Пример:


with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
    print(loaded_data) # Выведет: {'key': 'value', 'number': 42}


#вопросы_с_собеседований
👍221
👍 Библиотека jsonschema для валидации данных в формате JSON

Позволяет проверять, соответствуют ли данные JSON Schema. Также предоставляет возможность отложенной (ленивой) валидации, для идентификации всех ошибок валидации по мере их возникновения.

Установка — pip install jsonschema

🔗Страница библиотеки на PyPI
👍153
👤Аутентификация, авторизация пользователей и единый вход (SSO) с использованием Django

Автор новой статьи на Хабре подробно рассказывает о реализации технологии Единого Входа (SSO — Single Sign-On). Она даёт возможность пользователям получать доступ к разным системам без повторного ввода логина и пароля.

Чтобы интегрировать приложение на Django с SSO, следует сначала разобраться с механизмами аутентификации и авторизации пользователей. Более подробно об этом всём читайте здесь 👈
👍17🔥4
😺 PikaPython — ультралёгкий интерпретатор Python

Для запуска требует всего 4 KB RAM. Готов к использованию «из коробки» без каких-либо дополнительных настроек. Легко расширяется с помощью C.

PikaPython похож на проект MicroPython, который также ориентирован на работу в условиях ограниченных ресурсов. Это делает интерпретатор подходящим для встроенных систем, устройств IoT и микроконтроллеров.

🧑‍💻 Репозиторий с подробными инструкциями и примерами
👏11👍8
🐍 Создаем игру «Виселица» на Python. Часть 2. Графический интерфейс на PySimpleGUI

В первой части мы написали код для получения и обработки вводимых игроком данных, создали некоторые компоненты и текстовый пользовательский интерфейс (TUI). Во второй части реализуем логику игры «Виселица» и создадим графический интерфейс с помощью PySimpleGUI.

🔗 Читать статью
🥰1033
🐍💬 Как часто вы используете ключевое слово del в Python?

Я пишу код на Python уже многие годы, в основном бэкенд для веб-приложений, но почти никогда не использовал del. Есть у кого-нибудь интересные или убедительные примеры использования этой команды?


Так написал один из пользователей Reddit. Что бы вы ответили?

❤️ — я действительно использую del
🤔 — да зачем это вообще нужно?

#интерактив
🤔7837🌚7
🧑‍💻 Granian — HTTP-сервер, написанный на языке программирования Rust

Предназначен для использования в Python-приложениях. Преимущества Granian:
✔️Имеет единственную, правильную реализацию HTTP, поддерживающую версии 1, 2 (и в конечном итоге 3).
✔️Избегает обычной композиции зависимостей Gunicorn + uvicorn + http-tools на Unix-системах.
✔️Обеспечивает стабильную производительность по сравнению с существующими альтернативами.

Granian поддерживает ASGI/3, RSGI и WSGI, HTTPS, веб-сокеты.

Установка — pip install granian

🔗 Репозиторий проекта на GitHub
🔥14👍2😁2
🤔 Зачем нужна функция reload() модуля importlib

Используется для перезагрузки ранее импортированного модуля.

Это может пригодиться при динамической настройке. Функция reload делает возможным изменение частей программы без остановки всей программы. То есть можно незамедлительно наблюдать эффекты от изменений в компонентах. Это позволяет значительно сократить цикл разработки.

✏️ Стоит помнить, что когда модуль перезагружается, его словарь, содержащий глобальные переменные, сохраняется. Если в новой версии модуля нет имён переменных, функций, классов, которые были определены в старой версии, то старое определение остаётся.

#код
👍9😁72❤‍🔥1
django 5.0.pdf
9.6 MB
🐍 Большой справочник по Django

По сути, это полная документация. Разбита на главы, охватывающие все темы. Есть нужные инструкции и примеры кода. Всё на 2800 страницах!

Вот некоторые из тем:
Установка
Модели и базы данных
Шаблоны
Классы
Миграции
Аутентификация
Логирование
👍226🥱1