fa
Feedback
Pythoner

Pythoner

رفتن به کانال در Telegram

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

نمایش بیشتر
6 811
مشترکین
+124 ساعت
+27 روز
-3730 روز
آرشیو پست ها
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать

✈️Context Manager в Python - это объект, который позволяет работать с ресурсами в блоках кода с помощью ключевого слова "with
✈️Context Manager в Python - это объект, который позволяет работать с ресурсами в блоках кода с помощью ключевого слова "with". Context Manager предоставляет возможность автоматически захватывать и освобождать ресурсы, такие как файлы, сокеты, соединения с базами данных и т. д. ➡️Основные возможности контекстных менеджеров: - Автоматическое управление ресурсами: Контекстные менеджеры автоматически управляют ресурсами, что позволяет избежать утечек и ошибок. - Поддержка различных ресурсов: Контекстные менеджеры могут использоваться для управления различными ресурсами, такими как файлы, сетевые соединения, базы данных и другие. - Создание собственных контекстных менеджеров: Вы можете создавать свои собственные контекстные менеджеры, используя протокол контекстных менеджеров. ➡️Примеры: 1. Создание контекстного менеджера с помощью класса:
class MyResource:
    def __enter__(self):
        print("Resource opened")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Resource closed")

# Использование контекстного менеджера
with MyResource() as resource:
    print("Inside with block")
2. Работа с сетевыми соединениями:
import socket

class SocketManager:
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.socket = None

    def __enter__(self):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.connect((self.host, self.port))
        return self.socket

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.socket.close()

# Использование контекстного менеджера
with SocketManager('example.com', 80) as sock:
    sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
    response = sock.recv(4096)
    print(response.decode())
💡Заключение: Context Manager в Python удобен и надежен для работы с ресурсами, так как гарантирует их корректное освобождение и упрощает работу с ними. 🐍 Pythoner

Мультитрек для опытных бэкенд-разработчиков Ищем бэкенд-разработчиков с 5+ годами опыта на C++, Java/Kotlin, Go или Python в команды Яндекса. Здесь мы вместе строим технологии, которые меняют мир. Создаём продукты на основе ИИ и машинного обучения, формируем сильную инженерную культуру, внедряем научный подход. Специально для соискателей мы разработали Мультитрек — программу, где можно попробовать задачи на практике перед тем, как выбрать команду и проект. Как всё устроено: до 18 августа оставляете заявку, 23 августа решаете задачи для разработчиков на технических секциях, 24 августа завершаете собеседование и получаете офер. Дальше вы сможете попробовать себя в трёх командах: поработать в каждой по 3–4 недели, изучить процессы, познакомиться с коллегами и выбрать лучший для себя проект. Узнать больше #реклама 16+ yandex.ru О рекламодателе

E-CUP возвращается. Реальные данные. Масштабные проекты. Большие призы Решайте ML-задачи в стиле Ozon Tech. Девять победителе
E-CUP возвращается. Реальные данные. Масштабные проекты. Большие призы Решайте ML-задачи в стиле Ozon Tech. Девять победителей разделят призовой фонд соревнования — 7 200 000 рублей 🔥 Тест-драйв работы в e-com бигтехе стартует здесь. 🗓 Регистрация: https://cnrlink.com/ecup25pythoner 💻 Формат участия: онлайн 👥 Команда: от 1 до 5 человек 🎯 Для кого: Data Scientists, ML-специалисты, аналитики данных, дата-инженеры, специалисты Big Data и разработчики, которые интересуются ML/DS. Что вас ждёт: 🔹 Работа над проектом для миллионов пользователей на основе данных от ведущего e-com в России. 🔹 Обмен опытом с экспертами Ozon Tech. 🔹 Эксклюзивный мерч для победителей и подарки для самых активных участников. 🔹 Питчинг — 13 сентября на конференции E-CODE. Ozon Tech предоставит финалистам билеты и оплатит поездку. Три трека E-CUP: 1️⃣ Рекомендации: предсказание следующей покупки пользователя 2️⃣ Логистика: автопланирование курьеров 3️⃣ Контроль качества: автоматическое выявление поддельных товаров Регистрация на платформе Codenrock: https://cnrlink.com/ecup25pythoner

✈️Dict comprehension – это удобный способ создания словарей в одну строку, используя генераторы. Он позволяет преобразовывать
✈️Dict comprehension – это удобный способ создания словарей в одну строку, используя генераторы. Он позволяет преобразовывать данные компактно и эффективно. ➡️Основной синтаксис:
{key: value for item in iterable}
➡️Создание словаря из списка:
numbers = [1, 2, 3, 4]
squared = {x: x**2 for x in numbers}
print(squared)  # {1: 1, 2: 4, 3: 9, 4: 16}
➡️Фильтрация значений:
original = {"a": 10, "b": 20, "c": 30}
filtered = {k: v for k, v in original.items() if v > 15}
print(filtered)  # {'b': 20, 'c': 30}
➡️Создание словаря из строки:
text = "hello"
char_count = {char: text.count(char) for char in set(text)}
print(char_count)  # {'o': 1, 'l': 2, 'e': 1, 'h': 1}
🐍 Pythoner

Как зарабатывать удаленно с нейросетями? Присоединяйся! Подпишись прямо сейчас, чтобы не потерять: Свежие обзоры нейросетей,
Как зарабатывать удаленно с нейросетями? Присоединяйся! Подпишись прямо сейчас, чтобы не потерять: Свежие обзоры нейросетей, которые реально работают — без лишнего хайпа и воды, только проверенная информация, которую можно использовать для заработка. Пошаговые видео-уроки, после которых всё станет понятно — научитесь быстро осваивать новые профессии и автоматизировать рутинные задачи. Как находить клиентов, готовых платить дорого — секреты эффективного поиска заказов и построения стабильного потока заказов. Автоматизация работы — научитесь выполнять 2-часовую работу за 20 минут без выгорания, автоматизируя рутину с помощью нейросетей. Дополнительный доход — узнаете, как зарабатывать в свободное время, не уходя с основной работы или учебы. Подписаться #реклама 16+ О рекламодателе

➡️В Python is проверяет, один ли это объект в памяти, а не равны ли значения: a = 1000 b = 1000 print(a is b) # False Даже ес
➡️В Python is проверяет, один ли это объект в памяти, а не равны ли значения:
a = 1000
b = 1000
print(a is b)  # False
Даже если a == b, a is b может вернуть False, потому что это разные объекты. Python кэширует только небольшие числа и короткие строки. ➡️Частая ошибка:
if value is "test":  # ❌
Правильно:
if value == "test":  # ✅
➡️Когда is уместен? Только для сравнения с singleton'ами, такими как:
if x is None:
    ...
🔫Неправильное использование is может вызвать странные баги, особенно в сравнениях. Будь точен — is не для значений. 🐍 Pythoner

Регистрируйтесь на 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