Pythoner
Відкрити в Telegram
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode
Показати більше6 547
Підписники
-524 години
-167 днів
-5230 днів
Архів дописів
6 546
Мультитрек для опытных бэкенд-разработчиков
Ищем бэкенд-разработчиков с 5+ годами опыта на C++, Java/Kotlin, Go или Python в команды Яндекса. Здесь мы вместе строим технологии, которые меняют мир. Создаём продукты на основе ИИ и машинного обучения, формируем сильную инженерную культуру, внедряем научный подход.
Специально для соискателей мы разработали Мультитрек — программу, где можно попробовать задачи на практике перед тем, как выбрать команду и проект.
Как всё устроено: до 18 августа оставляете заявку, 23 августа решаете задачи для разработчиков на технических секциях, 24 августа завершаете собеседование и получаете офер.
Дальше вы сможете попробовать себя в трёх командах: поработать в каждой по 3–4 недели, изучить процессы, познакомиться с коллегами и выбрать лучший для себя проект.
Узнать больше
#реклама 16+
yandex.ru
О рекламодателе
6 546
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 546
✈️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 546
Как зарабатывать удаленно с нейросетями? Присоединяйся!
Подпишись прямо сейчас, чтобы не потерять:
Свежие обзоры нейросетей, которые реально работают — без лишнего хайпа и воды, только проверенная информация, которую можно использовать для заработка.
Пошаговые видео-уроки, после которых всё станет понятно — научитесь быстро осваивать новые профессии и автоматизировать рутинные задачи.
Как находить клиентов, готовых платить дорого — секреты эффективного поиска заказов и построения стабильного потока заказов.
Автоматизация работы — научитесь выполнять 2-часовую работу за 20 минут без выгорания, автоматизируя рутину с помощью нейросетей.
Дополнительный доход — узнаете, как зарабатывать в свободное время, не уходя с основной работы или учебы.
Подписаться
#реклама 16+
О рекламодателе
6 546
➡️В 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 546
Регистрируйтесь на Yandex Ecom Open Air 8 августа
Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг.
Участие бесплатно!
Зарегистрироваться
#реклама 18+
ecomfest.ru
О рекламодателе
6 546
✈️В 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 546
Регистрируйтесь на Yandex Ecom Open Air 8 августа
Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг.
Участие бесплатно!
Зарегистрироваться
#реклама 18+
ecomfest.ru
О рекламодателе
6 546
❓Хотите начать карьеру в программировании или расширить свои знания? На курсе «Python Developer. Basic» вы освоите:
- Синтаксис Python с нуля и создадите свой первый проект.
- Работу с фреймворками Django и FastAPI.
- Основы работы с базами данных, API, и парсингом сайтов.
- Принципы асинхронного программирования и автотестирования.
Программа курса включает живые лекции от практикующих экспертов, а диплом OTUS поможет вам продвинуться по карьерной лестнице. Вы научитесь решать реальные задачи, создавая веб-приложения и чат-ботов.
💪Не упустите шанс стать частью сильной команды разработчиков. Оставьте заявку и получите скидку на обучение: https://otus.pw/5LpIn/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
6 546
Во многих языках (
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 546
✈️При проверке паролей важно обеспечить безопасность ваших данных. Вместо сравнения паролей напрямую с помощью ==, лучше использовать библиотеку 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 546
✈️Ты наверняка знаешь 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 546
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
6 546
✈️Поверхностное и глубокое копирование объектов в 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] — сохранено исходное состояние
Зная эту разницу при работе со сложными структурами данных, можно избежать неожиданного поведения. Но не забывайте, что глубокое копирование может быть более ресурсоемким.
🐍 Pythoner6 546
✈️Утечка памяти в Python — это ситуация, когда объекты, которые больше не нужны, продолжают занимать память, потому что на них всё ещё существуют ссылки. Это мешает сборщику мусора освободить ресурсы.
➡️Причины утечки памяти:
- Сильные ссылки в замыканиях или глобальных структурах.
- Циклические ссылки (например, два объекта ссылаются друг на друга).
- Использование списков/словарей как кэшей без ограничения размера.
- Неочищенные обработчики событий, соединения или файлы.
➡️Как избежать:
- Использовать weakref для слабых ссылок.
- Очищать ненужные переменные (del, clear()).
- Контролировать размер кэшей.
- Проверять утечки с помощью инструментов вроде objgraph, gc, tracemalloc.
🐍 Pythoner
6 546
Получи грант до 1,2 млн руб. на обучение в магистратуре
4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб. Стажировки, диплом гос. образца и фокус на твоей карьере в ЦУ
Подать заявку
#реклама 16+
apply.centraluniversity.ru
О рекламодателе
