Pythoner
Kanalga Telegram’da o‘tish
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode
Ko'proq ko'rsatish6 811
Obunachilar
+124 soatlar
+27 kunlar
-3730 kunlar
Postlar arxiv
6 811
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
6 811
✈️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 удобен и надежен для работы с ресурсами, так как гарантирует их корректное освобождение и упрощает работу с ними.
🐍 Pythoner6 811
Мультитрек для опытных бэкенд-разработчиков
Ищем бэкенд-разработчиков с 5+ годами опыта на C++, Java/Kotlin, Go или Python в команды Яндекса. Здесь мы вместе строим технологии, которые меняют мир. Создаём продукты на основе ИИ и машинного обучения, формируем сильную инженерную культуру, внедряем научный подход.
Специально для соискателей мы разработали Мультитрек — программу, где можно попробовать задачи на практике перед тем, как выбрать команду и проект.
Как всё устроено: до 18 августа оставляете заявку, 23 августа решаете задачи для разработчиков на технических секциях, 24 августа завершаете собеседование и получаете офер.
Дальше вы сможете попробовать себя в трёх командах: поработать в каждой по 3–4 недели, изучить процессы, познакомиться с коллегами и выбрать лучший для себя проект.
Узнать больше
#реклама 16+
yandex.ru
О рекламодателе
6 811
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
6 811
✈️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}
🐍 Pythoner6 811
Как зарабатывать удаленно с нейросетями? Присоединяйся!
Подпишись прямо сейчас, чтобы не потерять:
Свежие обзоры нейросетей, которые реально работают — без лишнего хайпа и воды, только проверенная информация, которую можно использовать для заработка.
Пошаговые видео-уроки, после которых всё станет понятно — научитесь быстро осваивать новые профессии и автоматизировать рутинные задачи.
Как находить клиентов, готовых платить дорого — секреты эффективного поиска заказов и построения стабильного потока заказов.
Автоматизация работы — научитесь выполнять 2-часовую работу за 20 минут без выгорания, автоматизируя рутину с помощью нейросетей.
Дополнительный доход — узнаете, как зарабатывать в свободное время, не уходя с основной работы или учебы.
Подписаться
#реклама 16+
О рекламодателе
6 811
➡️В 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 не для значений.
🐍 Pythoner6 811
Регистрируйтесь на Yandex Ecom Open Air 8 августа
Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг.
Участие бесплатно!
Зарегистрироваться
#реклама 18+
ecomfest.ru
О рекламодателе
6 811
✈️В 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 приложения!
🐍 Pythoner6 811
Регистрируйтесь на Yandex Ecom Open Air 8 августа
Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг.
Участие бесплатно!
Зарегистрироваться
#реклама 18+
ecomfest.ru
О рекламодателе
6 811
❓Хотите начать карьеру в программировании или расширить свои знания? На курсе «Python Developer. Basic» вы освоите:
- Синтаксис Python с нуля и создадите свой первый проект.
- Работу с фреймворками Django и FastAPI.
- Основы работы с базами данных, API, и парсингом сайтов.
- Принципы асинхронного программирования и автотестирования.
Программа курса включает живые лекции от практикующих экспертов, а диплом OTUS поможет вам продвинуться по карьерной лестнице. Вы научитесь решать реальные задачи, создавая веб-приложения и чат-ботов.
💪Не упустите шанс стать частью сильной команды разработчиков. Оставьте заявку и получите скидку на обучение: https://otus.pw/5LpIn/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
6 811
Во многих языках (
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);
}6 811
✈️При проверке паролей важно обеспечить безопасность ваших данных. Вместо сравнения паролей напрямую с помощью ==, лучше использовать библиотеку 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 сравнивает пароли безопасным способом, защищая от тайминговых атак.
🐍 Pythoner6 811
✈️Ты наверняка знаешь 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 всё равно отработает.
Это твоя гарантированная уборка.
🐍 Pythoner6 811
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
6 811
✈️Поверхностное и глубокое копирование объектов в 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
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
