uz
Feedback
Pythoner

Pythoner

Kanalga Telegram’da o‘tish

Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode

Ko'proq ko'rsatish
6 621
Obunachilar
-124 soatlar
-97 kunlar
-3530 kunlar
Postlar arxiv
Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

✈️В FastAPI есть мощный инструмент для управления ресурсами приложения – @ asynccontextmanager в связке с lifespan. Это позво
✈️В FastAPI есть мощный инструмент для управления ресурсами приложения – @ asynccontextmanager в связке с lifespan. Это позволяет выполнить код инициализации при запуске и очистки при завершении приложения. ➡️Зачем это нужно? - Подготовка базы данных: Создание таблиц, миграции. - Инициализация соединений: Подключение к Redis, Kafka. - Очистка ресурсов: Закрытие соединений, удаление временных файлов. ➡️Как это работает? Декоратор @ asynccontextmanager создает асинхронный контекстный менеджер. Функция lifespan определяет, какой код выполняется до и после запуска приложения. ➡️Пример:

from contextlib import asynccontextmanager
from fastapi import FastAPI

# (Предположим, у вас есть функции create_db и close_db)
async def create_db():
    print("Подключаемся к базе данных...")
    # Здесь будет код подключения к БД
    await asyncio.sleep(1) # Имитация асинхронной операции
    print("База данных подключена!")

async def close_db():
    print("Закрываем соединение с базой данных...")
    # Здесь будет код закрытия соединения с БД
    await asyncio.sleep(1) # Имитация асинхронной операции
    print("Соединение с базой данных закрыто!")

@asynccontextmanager
async def lifespan(app: FastAPI):
    print("Запуск приложения...")
    await create_db()
    yield
    print("Завершение приложения...")
    await close_db()

app = FastAPI(lifespan=lifespan)

@app.get("/")
async def root():
    return {"message": "Hello World"}

# Запуск: uvicorn main:app --reload
- При запуске FastAPI (uvicorn main:app --reload) выполнится код до yield (создание таблиц). - При остановке FastAPI выполнится код после yield (удаление таблиц). lifespan + @ asynccontextmanager - это чистый и эффективный способ управлять ресурсами вашего FastAPI приложения! 🐍 Pythoner

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔Разбор sorted("Python") → ['P', 'h', 'n', 'o', 't', 'y']. [::-1] переворачивает список → ['y', 't', 'o', 'n', 'h', 'P']. [0] возвращает первый элемент → "y". 🐍 Pythoner

Что выдаст код выше❔
Anonymous voting

photo content

❓Хотите начать карьеру в программировании или расширить свои знания? На курсе «Python Developer. Basic» вы освоите: - Синтакс
❓Хотите начать карьеру в программировании или расширить свои знания? На курсе «Python Developer. Basic» вы освоите: - Синтаксис Python с нуля и создадите свой первый проект. - Работу с фреймворками Django и FastAPI. - Основы работы с базами данных, API, и парсингом сайтов. - Принципы асинхронного программирования и автотестирования. Программа курса включает живые лекции от практикующих экспертов, а диплом OTUS поможет вам продвинуться по карьерной лестнице. Вы научитесь решать реальные задачи, создавая веб-приложения и чат-ботов. 💪Не упустите шанс стать частью сильной команды разработчиков. Оставьте заявку и получите скидку на обучение: https://otus.pw/5LpIn/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Во многих языках (C, Java, JavaScript) блоки кода обозначаются {}. В Python же используются отступы. Почему так? - Читаемость
Во многих языках (C, Java, JavaScript) блоки кода обозначаются {}. В Python же используются отступы. Почему так? - Читаемость — код без лишних {} и end выглядит чище. - Принудительная структурность — нельзя "забыть закрыть скобку". - Исторический фактор — Гвидо ван Россум вдохновлялся языком ABC. ➡️Пример кода на Python:
for i in range(3):
    print(i)  # Отступ обязателен
🐍 Pythoner ➡️Тот же код на C:
for (int i = 0; i < 3; i++) {
    printf("%d\n", i);
}

✈️При проверке паролей важно обеспечить безопасность ваших данных. Вместо сравнения паролей напрямую с помощью ==, лучше испо
✈️При проверке паролей важно обеспечить безопасность ваших данных. Вместо сравнения паролей напрямую с помощью ==, лучше использовать библиотеку secrets. Это поможет защитить ваше приложение от атак. ➡️Пример кода:
import secrets

# Хранение паролей
password_storage = {}

# Функция для создания и хранения хэша пароля
def store_password(username, password):
    # Генерация случайного токена
    token = secrets.token_hex(16)
    password_storage[username] = {'token': token, 'password': password}

# Проверка пароля
def verify_password(username, provided_password):
    if username in password_storage:
        stored_password = password_storage[username]['password']
        # Сравнение паролей с использованием secrets.compare_digest
        return secrets.compare_digest(stored_password, provided_password)
    return False

# Использование
store_password("user1", "my_secure_password")

# Проверка входящего пароля
if verify_password("user1", "my_secure_password"):
    print("Пароль верный!")
else:
    print("Неверный пароль.")
💡Объяснение: - Библиотека secrets используется для генерации криптографически стойкого токена, который можно хранить, но в этом примере основной акцент сделан на безопасном сравнении паролей. - Функция compare_digest сравнивает пароли безопасным способом, защищая от тайминговых атак. 🐍 Pythoner

✈️Ты наверняка знаешь try/except, но как часто используешь finally? А ведь он нужен там, где что бы ни случилось — надо прибр
✈️Ты наверняка знаешь try/except, но как часто используешь finally? А ведь он нужен там, где что бы ни случилось — надо прибраться: ➡️Когда без него никак: 1. Закрытие файлов / соединений:
f = open("data.txt")
try:
    process(f)
finally:
    f.close()  # всегда выполнится
2. Откат транзакций:
try:
    db.begin()
    db.do_stuff()
finally:
    db.rollback_or_commit()
3. Остановка фоновых задач:
try:
    start_worker()
finally:
    stop_worker()
💡Даже если в try будет return, break, ошибка или KeyboardInterrupt — finally всё равно отработает. Это твоя гарантированная уборка. 🐍 Pythoner

Repost from IT memer

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать

✈️Поверхностное и глубокое копирование объектов в Python различается по тому, как они обрабатывают вложенные объекты: - Повер
✈️Поверхностное и глубокое копирование объектов в Python различается по тому, как они обрабатывают вложенные объекты: - Поверхностное копирование создает новый объект и сохраняет ссылки на вложенные объекты. Подходит для копирования объектов с иммутабельными вложенными элементами. - Глубокое копирование создает полностью независимую копию объекта с вложенными элементами. Полезно при необходимости полностью отделить копию от оригинала.
import copy

original = [1, [2, 3], 4]
shallow_copied = copy.copy(original)
deep_copied = copy.deepcopy(original)

original[1][0] = 'изменено'
print(original)         # [1, ['изменено', 3], 4]
print(shallow_copied)   # [1, ['изменено', 3], 4] — вложенный список изменился
print(deep_copied)      # [1, [2, 3], 4] — сохранено исходное состояние
Зная эту разницу при работе со сложными структурами данных, можно избежать неожиданного поведения. Но не забывайте, что глубокое копирование может быть более ресурсоемким. 🐍 Pythoner

✈️Утечка памяти в Python — это ситуация, когда объекты, которые больше не нужны, продолжают занимать память, потому что на ни
✈️Утечка памяти в Python — это ситуация, когда объекты, которые больше не нужны, продолжают занимать память, потому что на них всё ещё существуют ссылки. Это мешает сборщику мусора освободить ресурсы. ➡️Причины утечки памяти: - Сильные ссылки в замыканиях или глобальных структурах. - Циклические ссылки (например, два объекта ссылаются друг на друга). - Использование списков/словарей как кэшей без ограничения размера. - Неочищенные обработчики событий, соединения или файлы. ➡️Как избежать: - Использовать weakref для слабых ссылок. - Очищать ненужные переменные (del, clear()). - Контролировать размер кэшей. - Проверять утечки с помощью инструментов вроде objgraph, gc, tracemalloc. 🐍 Pythoner

Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб.
Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб. Стажировки, диплом гос. образца и фокус на твоей карьере в ЦУ Подать заявку #реклама 16+ apply.centraluniversity.ru О рекламодателе

Бесплатный курс по PostgreSQL от практиков рынка Присоединяйтесь к бесплатному курсу по основам PostgreSQL от Selectel и Эльб
Бесплатный курс по PostgreSQL от практиков рынка Присоединяйтесь к бесплатному курсу по основам PostgreSQL от Selectel и Эльбрус Буткемп. Он будет полезен Junior- и Middle-специалистам: администраторам баз данных, разработчикам, DevOps-инженерам и аналитикам.   Вы научитесь: 🔹создавать и связывать таблицы, 🔹выполнять базовые операции с данными, 🔹работать с РСУБД. Бонусы: вы можете получить сертификат о прохождении курса, а также промокоды для практики на мощностях Selectel. Начните обучение уже сегодня. Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwCgre4

✈️Это операция, которая при повторном выполнении даёт тот же результат и не изменяет состояние системы дополнительно. ➡️Повыш
✈️Это операция, которая при повторном выполнении даёт тот же результат и не изменяет состояние системы дополнительно. ➡️Повышение надёжности: Если операция случайно выполнится несколько раз (например, из-за сбоя в сети), идемпотентность гарантирует, что это не повлияет на итоговое состояние. ➡️Предотвращение дубликатов: Позволяет избежать непреднамеренного добавления данных или повторного применения изменений. Работа с HTTP: 1. GET — идемпотентен
GET /users/1
2. PUT — идемпотентен
PUT /users/1
{
  "name": "Alice"
}
🔫Повторный вызов не изменит состояние. 3. POST — не идемпотентен
POST /users
{
  "name": "Alice"
}
🔫Каждый вызов создаст нового пользователя. ➡️Идемпотентность в БД Идемпотентный:
DELETE FROM users WHERE id = 5;
🔫Повторное выполнение ничего не изменит, если пользователь уже удалён. Не идемпотентный:
INSERT INTO users (name) VALUES ('Alice');
🔫Повтор — создаст дубликаты. 💡Заключение Идемпотентность = безопасное повторное выполнение. 🐍 Pythoner

Онлайн-магистратура с IT специальностями от Яндекса Совместно с ИТМО, МИФИ, МФТИ. Онлайн-магистратура с актуальными программами и гибким графиком обучения. Получите высокооплачиваемую IT профессию, официальный диплом и практические знания. Господдержка оплаты. Совмещение с работой! Подать заявку #реклама 16+ practicum.yandex.ru О рекламодателе

🧑🏻‍💻Хотите стать Python-разработчиком и научиться работать с современными инструментами, которые используют ведущие компан
🧑🏻‍💻Хотите стать Python-разработчиком и научиться работать с современными инструментами, которые используют ведущие компании? Docker — это ваш ключ к успеху! Присоединяйтесь к открытому уроку «Docker и его возможности для Python-разработчика» от OTUS! Мы расскажем: - Что такое Docker и как он помогает ускорить разработку. - Чем контейнеры отличаются от виртуальных машин. - Как создавать и управлять Docker-образами для Python. - Базовые практики безопасности и оптимизации работы с Docker. Понимание Docker — это не просто тренд, а обязательное знание для разработчиков, стремящихся работать с актуальными технологиями и эффективно разворачивать приложения. Освоив Docker, вы значительно упростите свою работу с проектами, избавитесь от проблем с окружением и ускорите деплой. ⚡️Присоединяйтесь к уроку и получите скидку на большое обучение «Python Developer. Basic». Регистрация открыта: https://otus.pw/kfm7/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

✈️Elasticsearch — это распределенная поисковая система на основе Lucene, которая предоставляет мощные инструменты для поиска
✈️Elasticsearch — это распределенная поисковая система на основе Lucene, которая предоставляет мощные инструменты для поиска и анализа данных. Elasticsearch поддерживает множество функций, включая полнотекстовый поиск, агрегацию данных, машинное обучение и многое другое. Elasticsearch-py — это официальный клиент для работы с Elasticsearch в Python, который позволяет легко интегрировать Elasticsearch в ваши проекты. ➡️Основные возможности Elasticsearch: - Полнотекстовый поиск: Elasticsearch предоставляет мощные инструменты для полнотекстового поиска, что позволяет быстро находить данные в больших объемах текста. - Агрегация данных: Elasticsearch позволяет агрегировать данные, что полезно для аналитики и создания дашбордов. - Машинное обучение: Elasticsearch поддерживает машинное обучение, что позволяет автоматически обнаруживать аномалии и тенденции в данных. - Распределенная архитектура: Elasticsearch является распределенной системой, что позволяет масштабировать поиск и анализ данных. ➡️Пример cоздания клиента и индекса:
from elasticsearch import Elasticsearch

# Создание клиента Elasticsearch
es = Elasticsearch()

# Создание индекса
index_name = 'my_index'
es.indices.create(index=index_name)
➡️Агрегация данных:
# Агрегация данных
res = es.search(index=index_name, body={
    'aggs': {
        'author_count': {
            'terms': {'field': 'author.keyword'}
        }
    }
})
print(res['aggregations'])
🐍 Pythoner