ch
Feedback
Pythoner

Pythoner

前往频道在 Telegram

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

显示更多
6 811
订阅者
+124 小时
+27
-3730
帖子存档
REKONFA Live 6 ноября приглашаем рекламодателей, агентства и рекламные площадки обсудить технологии, маркетинговые инструмент
REKONFA Live 6 ноября приглашаем рекламодателей, агентства и рекламные площадки обсудить технологии, маркетинговые инструменты и актуальные новинки. Ключевые участники рынка поделятся опытом и расскажут: — О ситуации на рынке рекламы — Как продвигать и продавать в интернете в 2025 году — Как бизнесу адаптироваться к меняющимся условиям Вас ждут доклады на актуальные темы, классный нетворкинг, вдохновляющая атмосфера для творчества и креатива. Встречаемся 6 ноября в Москве. Для тех, кто не сможет приехать, организуем интерактивное digital-шоу. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

✈️Функция enumerate() позволяет перебрать элементы последовательности вместе с их индексами. Это удобно, когда нужен не тольк
✈️Функция enumerate() позволяет перебрать элементы последовательности вместе с их индексами. Это удобно, когда нужен не только элемент, но и его позиция в коллекции. ➡️Пример:
fruits = ["apple", "banana", "orange"]

for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

1 apple  
2 banana  
3 orange 
🔫В этом примере enumerate() вернёт кортежи с индексом и значением. 💡Заключение enumerate() удобно использовать вместо range(len()) для более чистого и читаемого кода при переборе списков, кортежей и других коллекций. 🐍 Pythoner

✈️Protocol из модуля typing позволяет определить интерфейс, который должен реализовывать класс. Это полезно для проверки соот
✈️Protocol из модуля typing позволяет определить интерфейс, который должен реализовывать класс. Это полезно для проверки соответствия объектов определённым методам и атрибутам, что делает код более гибким и понятным. ➡️Когда применять Protocol? - Динамическая типизация: Если вы хотите задать контракт для классов без явного указания на наследование. - Гибкость: Позволяет различным классам предоставлять свою реализацию методов, сохраняя общий интерфейс. - Улучшение читаемости: Помогает лучше понять как должны взаимодействовать различные части кода. ➡️Пример использования Protocol:
from typing import Protocol

# Определяем протокол
class Movable(Protocol):
    def move(self) -> None:
        ...

# Класс, реализующий этот протокол
class Car:
    def move(self) -> None:
        print("Car is moving")

class Bird:
    def move(self) -> None:
        print("Bird is flying")

def drive(vehicle: Movable) -> None:
    vehicle.move()

# Используем
car = Car()
bird = Bird()

drive(car)  # Output: Car is moving
drive(bird)  # Output: Bird is flying
💡Заключение Protocol — мощный инструмент для задания интерфейсов в Python. Он обеспечивает гибкость и улучшает структуру вашего кода. Используйте его, когда нужно задать контракты для различных классов без строгой иерархии наследования. 🐍 Pythoner

Для крупных покупок выбирайте аккредитив Газифицируете участок или приобретаете дорогостоящую технику, мебель на заказ? Оформ
Для крупных покупок выбирайте аккредитив Газифицируете участок или приобретаете дорогостоящую технику, мебель на заказ? Оформите аккредитив от СберБанка — оплата пройдёт только после исполнения подрядчиком всех обязательств. Какие ещё преимущества? 👌Удобство: можно оставить заявку на сайте и подписать документы в СберБанк Онлайн. ⚡Скорость: оформление — 10 минут, средства переведём за 1 день. 💰 Доступность: стоимость от 500 ₽. Узнайте, в каких случаях аккредитив пригодится вам, на сайте Узнать больше Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Финансовые услуги оказывает: ПАО Сбербанк. #реклама sberbank.ru О рекламодателе

✈️range() — встроенная функция для генерации чисел. Используется для перебора в цикле. Синтаксис: range(начало, конец, шаг) П
✈️range() — встроенная функция для генерации чисел. Используется для перебора в цикле. Синтаксис:
range(начало, конец, шаг)
По умолчанию: начало = 0, шаг = 1. ➡️Пример:
# Простой range от 0 до 2
for i in range(3):
    print(i)

# Range с началом и шагом
for i in range(1, 10, 2):
    print(i)

# Вывод:
# 0
# 1
# 2
# 1
# 3
# 5
# 7
# 9
🐍 Pythoner

ИИ-революция в вашей карьере: бесплатный вебинар 2025 год: нейросети — это must-have навык для карьерного роста. 👌 ✅Приглаша
+1
ИИ-революция в вашей карьере: бесплатный вебинар 2025 год: нейросети — это must-have навык для карьерного роста. 👌 ✅Приглашаем на бесплатный живой вебинар, где вы: --- Поймете, какие нейросети существуют и как их применять в работе. --- Научитесь писать эффективные промпты и автоматизировать рутину. --- Узнаете, как делегировать ИИ задачи и экономить от 20 часов в неделю! --- Создадите своего первого ИИ-ассистента в прямом эфире. Получите руководство «Как создать цифровой аватар» сразу после регистрации! Подойдет новичкам. Онлайн-формат с ответами на вопросы. ⚡ Жмите «Зарегистрироваться», чтобы прокачать свой скилл-сет и освободить время для главного! Зарегистрироваться #реклама 16+ ed.bonnieandslide.com О рекламодателе

DevPyConf на Cтачке Python-разработка│ 3 октября │ Санкт-Петербург На DevPyConf соберутся ведущие Python разработчики, чтобы
DevPyConf на Cтачке Python-разработка│ 3 октября │ Санкт-Петербург На DevPyConf соберутся ведущие Python разработчики, чтобы обсудить тренды, архитектуру и инструменты. Ключевые треки конференции: — Архитектура и python — Современный ML, AI тулинг
Выступят спикеры: → Михаил Гурбанов, TechLead в Райффайзенбанке. Тема доклада: «Архитектура сервисов в AI ландшафте» → Евгений Блинов, Разработчик в Авито. Тема доклада: «Дружим sync и async питоны» → Юрий Маркин, Старший разработчик в X5 Tech. Тема доклада: «Pythorust не серебряная пуля» → Денис Воронкин, Backend разработчик в KTS. Тема доклада: «Почему надежно кешировать данные сложно?» → Александр Кучин, Python разработчик в Литрес. Тема доклада: «Мы уменьшили длительность нашего пайплайна в несколько раз - до 17 минут» → Алексей Фиссон, Тим лид в X5 Tech. Тема доклада: «Чем вам asyncio не фреймворк, а Redis не брокер?» → Сергей Волков, Team Lead в Сбере. Тема доклада: «Метрики без боли: AI-агент вместо BI-навигации» → Денис Аникин, Тимлид/Комьюнити лид в Райффайзенбанке. Тема доклада: «Выбираем LLM gateway»
Программа и билеты на сайте Следите за новостями в Телеграме и ВК

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

✈️Когда мы открываем Яндекс.Карты, Google Maps или сервис доставки еды — за кулисами всегда работает геокодинг. Приложение до
✈️Когда мы открываем Яндекс.Карты, Google Maps или сервис доставки еды — за кулисами всегда работает геокодинг. Приложение должно понять: - Где находится пользователь - Как далеко курьер от адреса - Какие ближайшие отели или кафе показать Всё это можно сделать прямо из Python с помощью библиотеки Geopy. ➡️ Что умеет Geopy: - Геокодинг — превращает адрес в координаты («Москва, Красная площадь» → 55.7539, 37.6208) - Обратный геокодинг — по координатам даёт адрес (55.7539, 37.6208 → «Красная площадь, Москва, Россия») - Расстояния — считает путь между точками (в км, милях, морских милях) - Поддержка разных сервисов: OpenStreetMap (Nominatim), Google, Яндекс, Bing, ArcGIS и др. ➡️Примеры:
from geopy.geocoders import Nominatim
from geopy.distance import geodesic

# Инициализация геокодера
geo = Nominatim(user_agent="geo_app")

# 1️⃣ Адрес → координаты
moscow = geo.geocode("Москва, Красная площадь")
print("Москва:", moscow.latitude, moscow.longitude)

# 2️⃣ Координаты → адрес
place = geo.reverse("55.7539, 37.6208")
print("Адрес:", place.address)

# 3️⃣ Расстояние Москва–СПб
p1 = (moscow.latitude, moscow.longitude)
p2 = (59.9343, 30.3351)  # Санкт-Петербург
print("Расстояние:", geodesic(p1, p2).km, "км")
🔫Результат:
Москва: 55.7539, 37.6208
Адрес: Красная площадь, Москва, Россия
Расстояние: ~634 км 🚄
➡️ Где пригодится Geopy: - Логистика: рассчитывать маршруты доставки - Аналитика: строить тепловые карты заказов - Travel-сервисы: находить ближайшие отели или достопримечательности - Стартапы: от «поиска ближайшей кофейни» до «глобального трекера велосипедов» 💡Заключение Geopy делает Python ближе к реальному миру. С его помощью можно писать приложения, которые не просто что-то считают, а реально «понимают» где находится человек, бизнес или объект. 🐍 Pythoner

✈️В Python можно сразу присвоить значения нескольким переменным в одной строке. Это удобно и делает код короче. x, y, z = 1,
✈️В Python можно сразу присвоить значения нескольким переменным в одной строке. Это удобно и делает код короче.
x, y, z = 1, 2, 3
print(x, y, z)  # 1 2 3
➡️Можно использовать для обмена значениями без временной переменной:
a, b = 5, 10
a, b = b, a
print(a, b)  # 10 5
💡 Это стандартный приём в Python, который экономит строки и делает код читаемым. 🐍 Pythoner

✈️Global Interpreter Lock (GIL) — это механизм в CPython, который ограничивает выполнение Python-кода одним потоком за раз, д
✈️Global Interpreter Lock (GIL) — это механизм в CPython, который ограничивает выполнение Python-кода одним потоком за раз, даже на многопроцессорных системах. ➡️Зачем нужен GIL? Он предотвращает проблемы с управлением памятью и упрощает работу интерпретатора. Однако из-за него многопоточные программы не могут эффективно использовать несколько ядер процессора. ➡️Когда GIL мешает? - В CPU-интенсивных задачах (например, обработка данных, вычисления) многопоточность не дает прироста производительности. - В I/O-интенсивных задачах (сетевые запросы, работа с файлами) GIL почти не влияет, так как потоки могут освобождать блокировку во время ожидания операций ввода-вывода. 💡Решение: Если нужна настоящая параллельность, используйте многопроцессорность (multiprocessing), которая запускает отдельные процессы без GIL, или попробуйте альтернативные реализации Python, такие как Jython или PyPy. 🐍 Pythoner

Если честно, меня бесят каналы, где непонятно кто учит программированию. На деле там копипаста с первой страницы гугла, которая грузит мозги. Но есть и исключения. Например, канал @devsp. Его автор — ведущий разраб в области искусственного интеллекта. На минуточку, он приложил руку к самым нашумевшим нейронкам — Claude, Chat GPT и DeepSeek. А теперь представьте, что мастодонт такого уровня ЛИЧНО делится внутрянкой своей работы и объясняет сложные концепции так, что поймёт даже отсталый двоечник. Вещает про Data Science и машинное обучение с упором на практику (которой даже в платных курсах сильно не хватает). Короче, если хотите быстро и без проблем расти в профессии — обязательно подпишитесь. Редко где найдешь такой баланс теории, подачи и практики: @devsp

✈️UScrapper — это относительно новая библиотека Python, созданная для упрощения веб-скрапинга. Она предоставляет высокоуровне
✈️UScrapper — это относительно новая библиотека Python, созданная для упрощения веб-скрапинга. Она предоставляет высокоуровневый интерфейс для извлечения данных с веб-страниц без необходимости писать много кода. ➡️UScrapper особенно полезен для начинающих разработчиков и для тех, кто хочет быстро получить структурированные данные без глубокого погружения в детали HTML, CSS-селекторов или XPath. ➡️Пример извлечение таблиц со страницы:
from uscrapper import extract_tables

url = "https://en.wikipedia.org/wiki/List_of_countries_by_population"
tables = extract_tables(url)

# Первые 5 строк первой таблицы
print(tables[0].head())
💡Заключение Инструмент оснащен передовыми модулями обхода анти-парсинга и поддерживает технологии для извлечения информации из всех ссылок в пределах одного домена. Кроме того, в программе предусмотрена возможность создания отчета, содержащего все извлеченные данные. 🐍 Pythoner

✈️Метод getitem позволяет обращаться к объектам класса по индексу или ключу, как к спискам или словарям. ➡️Пример: class Cust
✈️Метод getitem позволяет обращаться к объектам класса по индексу или ключу, как к спискам или словарям. ➡️Пример:
class CustomList:
    def init(self, data):
        self.data = data

    def getitem(self, index):
        return self.data[index]  # Позволяет использовать obj[index]

nums = CustomList([10, 20, 30])
print(nums[1])  # 20
➡️Зачем нужен: - Позволяет настроить доступ к элементам объекта. - Делает объекты итерируемыми (например, в for-циклах). - Помогает создавать свои структуры данных, работающие как списки или словари. 💡Заключение getitem делает объекты гибкими и удобными в использовании, улучшая читаемость кода! 🐍 Pythoner

🤔Разбор Разбор кода по шагам: s = "python" 1. s[1:5:2] Формат среза: [start:stop:step] start = 1, stop = 5 (не включительно), step = 2 Берём символы с индексами 1 и 3: s[1] = 'y' s[3] = 'h' Результат: 'yh' 2. s[::-1] Шаг -1 → идём с конца к началу → переворачиваем строку полностью 'python' → 'nohtyp' Результат: 'nohtyp' 3. s[::3] Шаг 3, start и stop не указаны → берём от начала до конца, каждый 3-й символ Индексы, которые берём: 0, 3 s[0] = 'p' s[3] = 'h' Результат: 'ph' Итоговый вывод: 'yh', 'nohtyp', 'ph' 🐍 Pythoner

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

photo content

✈️Когда работаешь с большими массивами данных, производительность кода становится критически важной. Рассмотрим, как можно ус
✈️Когда работаешь с большими массивами данных, производительность кода становится критически важной. Рассмотрим, как можно ускорить обработку данных, используя библиотеку NumPy вместо стандартных циклов Python. ➡️Проблема: медленные циклы Допустим, у нас есть список чисел, и мы хотим возвести каждое число в квадрат:
data = list(range(1_000_000))
squared = [x**2 for x in data]  # Медленно!
🔫Этот код работает, но на больших объемах данных циклы Python работают неэффективно, что может значительно замедлить выполнение программы. ➡️Решение: NumPy Используем библиотеку NumPy, которая оптимизирована для работы с массивами:
import numpy as np

data_np = np.arange(1_000_000)
squared_np = data_np ** 2  # В десятки 
🔫NumPy использует векторизацию, что позволяет выполнять операции над целыми массивами данных за одно обращение, значительно ускоряя вычисления. 💡Заключение Если ваш код обрабатывает большие объемы данных, замена циклов Python на операции с NumPy может ускорить выполнение в 10–100 раз! Это особенно важно в научных вычислениях, анализе данных и машинном обучении, где скорость обработки данных критична. 🐍 Pythoner

Тариф, с которым хватит на всё 50 ГБ и безлимитные минуты за 390 ₽ в месяц, если перенесете номер в Т-Мобайл до 30 сентября Узнать больше #реклама tbank.ru О рекламодателе

✈️По умолчанию атрибуты хранятся в словаре dict, но этот подход неэффективен по памяти, особенно если создаётся много однотип
✈️По умолчанию атрибуты хранятся в словаре dict, но этот подход неэффективен по памяти, особенно если создаётся много однотипных объектов. slots ограничивает список атрибутов у экземпляров класса, экономя память за счет отказа от dict. ➡️Обычный класс без slots:
class Person:
    def init(self, name, age):
        self.name = name
        self.age = age

p = Person("Alice", 25)
p.city = "New York"  # Можно добавить новый атрибут
➡️Класс с slots:
class Person:
    slots = ("name", "age")  # Разрешены только эти атрибуты

    def init(self, name, age):
        self.name = name
        self.age = age

p = Person("Alice", 25)
p.city = "New York"  # ❌ AttributeError: 'Person' object has no attribute 'city'
💡Плюсы slots - Экономит память (не создается dict) - Ускоряет доступ к атрибутам - Предотвращает создание лишних атрибутов 🐍 Pythoner

Pythoner - Telegram 频道 @pythonercode 的统计与分析