uk
Feedback
Zen of Python

Zen of Python

Відкрити в Telegram

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Показати більше

📈 Аналітичний огляд Telegram-каналу Zen of Python

Канал Zen of Python (@zen_of_python) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 19 290 підписників, посідаючи 6 972 місце в категорії Технології та додатки та 35 079 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 19 290 підписників.

За останніми даними від 05 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 26, а за останні 24 години на -3, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 12.34%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.62% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 2 378 переглядів. Протягом першої доби публікація в середньому набирає 1 082 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 9.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як github, rust, pip, api, install.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Завдяки високій частоті оновлень (останні дані отримано 06 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

19 290
Підписники
-324 години
+137 днів
+2630 день
Архів дописів
Google Gemini разочаровался в себе и... предложил заплатить разработчику за баг Во время переписки ИИ от Google честно призна
Google Gemini разочаровался в себе и... предложил заплатить разработчику за баг Во время переписки ИИ от Google честно признался: «Мои знания устарели, я только мешаю». При этом он предложил пользователю оплатить услуги настоящего программиста для решения проблем. Причиной стали вечные конфликты Vite, Tailwind и PostCSS, в которых Gemini окончательно запутался. Вместо решения — депрессия и предложение нанять «кожаного программиста». Ну что, работяги — можем спать спокойно? Никакой ИИ нас пока что не заменит @your_tech

Придумайте подпись к видео так, чтобы это относилось к Python-разработке #обсуждение @zen_of_python

Вопросы подписчиков Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает: — Спрашивайте
Вопросы подписчиков Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает: — Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов! — Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте. #обсуждение @zen_of_python

Зацените как похорошели транскрибации при Войси! Вайб-кодинг вайб-кодингом, но как же не хватает простого человеческого «расш
Зацените как похорошели транскрибации при Войси! Вайб-кодинг вайб-кодингом, но как же не хватает простого человеческого «расшифруй мне созвон, только качественно!!». С этим вам поможет Войси. 🤯Этот ИИ-агент может с легкостью сделать из созвона текст, подвести итоги встречи и составить саммари. Войси переводит с 54 языков на русский без всяких артефактов и составляет текст в аккуратные абзацы с выделенными тезисами. Самое удобное, что далеко ходить не надо — всё это делается прямо в «телеге». Экономьте своё время, превращая часы в минуты. 🔥А новичкам доступны 1,5 часа бесплатной транскрибации. Забирайте: https://tprg.ru/9xQo

​​job-hunter | Для цифровых кочевников Один энтузиаст создал трекер вакансий на удаленке, который ищет среди работных сайтов вроде GitHub, WorkingNomads и Remote.io подходящие объявления и высылает находки Telegram-ботом. Есть фильтрация по тегам. Если вам хочется поупражняться — форкайте и дописывайте под HH. #пет-проект @zen_of_python

opendota2-vision | Ищем «смурфов» в Dota Энтузиаст запилил проект на pytesseract, pillow, который находит в Dota2 «смурфов» —
opendota2-vision | Ищем «смурфов» в Dota Энтузиаст запилил проект на pytesseract, pillow, который находит в Dota2 «смурфов» — опытных игроков, которые создают новый аккаунт с низким рейтингом, чтобы играть против менее сильных соперников. Их цель — играть на «низком» уровне, где он явно сильнее большинства игроков, выигрывать легко и, как правило, доминировать в матчах. #пет_проект @zen_of_python

Переменные окружения: введение Переменные окружения — это данные, хранящиеся вне программы, которые могут влиять на её поведение. Например, ключ API или пароли, указанные в коде, будут доступны только при выполнении программы — и не попадут в публичный репозиторий. Такое хранение существенно повышает безопасность «переносимого» проекта. Встроенный модуль os Простейший способ обратиться к средовой переменной в коде — os.environ:

import os
print(os.environ) # Вывести все переменные
val = os.environ['USER'] # Бросит KeyError, если нет
val = os.getenv('USER')
.env и python-dotenv Общепринятая практика — хранить конфигурацию в файле .env и загружать переменные при старте скрипта:

# .env
API_KEY=abcdef
DB_URL=postgres://...

from dotenv import load_dotenv
import os

load_dotenv()  # загрузка из .env
api_key = os.getenv('API_KEY')
Это удобно, упорядочивает конфигурацию и изолирует окружение от кода. Кстати, установка переменных внутри кода актуальна только для текущего процесса и его подпроцессов. После завершения скрипта изменения теряются и не влияют на внешнюю систему. Без .env Порой для простых проектов проще вообще не создавать файлов .env, можно экспортировать в виртуальное окружение переменную сразу. Как это делается в Unix или macOS:

export API_KEY="abcdef"
export API_SECRET="12345"
В Windows CMD:

set API_KEY=abcdef
set API_SECRET=12345
load_dotenv Еще один удобный способ «вчитаться» во все средовые переменные в коде — функция load_dotenv(). Для нее потребуется установить библиотеку: pip install python-dotenv. И теперь функция считает все переменные, каким бы способом они ни были объявлены:

from dotenv import load_dotenv
load_dotenv()
#основы @zen_of_python

Как динамически изменять исходный код функций В статье «Wicked Python Trickery» Эрик Ма делится необычным и мощным методом динамической модификации исходного кода функций во время выполнения программы. Что за трюк? В Python каждая функция имеет атрибут .__code__, который представляет собой объект байткода. Используя функции compile() и exec(), можно создать новый исходный код функции, скомпилировать его в байткод и выполнить в нужном пространстве имён. Это позволяет заменить поведение функции без её явного переопределения:

def something():
    raise NotImplementedError()

new_code = """
def something(x: int) -> int:
    return x * 2
"""

compiled = compile(new_code, "<magic>", "exec")
ns = {}
exec(compiled, {}, ns)

something_new = ns["something"]
print(something_new(21))  # Выведет 42
Здесь мы создаём новый исходный код функции something, компилируем его и выполняем в пустом пространстве имён. Затем извлекаем новую функцию из этого пространства и вызываем её. Практическое применение Эрик использовал этот метод для создания бота, который выбирает инструменты для выполнения, но не выполняет их сам. Вместо этого он генерирует Python-функции на лету, которые имеют доступ ко всем глобальным переменным текущего сеанса. Это позволяет создавать гибкие и мощные инструменты без необходимости заранее определять все возможные функции. Этот подход позволяет LLM (Large Language Model) генерировать код, который может использовать текущие данные и функции, доступные в глобальном пространстве имён. Риски безопасности Однако такой подход сопряжён с серьёзными рисками. Выполнение сгенерированного кода без должной проверки может привести к выполнению вредоносных действий, таких как удаление файлов, утечка данных или атаки на внешние сервисы. Эрик отметил, что в текущей реализации отсутствует защита от таких угроз, и планирует использовать инструменты, такие как Restricted Python, для ограничения возможностей выполняемого кода. #факт @zen_of_python

Как тестировать перенос и трансформацию данных без боли В статье на Tproger представили практичный и понятный подход к тестир
Как тестировать перенос и трансформацию данных без боли В статье на Tproger представили практичный и понятный подход к тестированию ETL-процессов с использованием Python, Pytest и фикстур. Автор — Data QA, поделилась опытом автоматизации создания и наполнения таблиц, хранением схем и данных в JSON, а также сравнением результатов до и после трансформации. Проект с минимальным стеком — pytest, allure и psycopg2. Статья будет полезна разработчикам и тестировщикам. #основы @zen_of_python

Про with with позволяет обернуть выполнение блока кода в так называемый контекстный менеджер, который автоматически управляет ресурсами. Это особенно полезно для операций, требующих явного освобождения ресурсов, таких как работа с файлами, сетевыми соединениями или базами данных:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
В этом примере файл автоматически закроется после выхода из блока, даже если в процессе чтения произойдет исключение. Как работает? Оператор работает с объектами, реализующими протокол контекстного менеджера, то есть имеющими методы: 🔘__enter__(): выполняется при входе в блок with. Готовит ресурс и возвращает его; 🔘__exit__(): выполняется при выходе из блока. Отвечает за очистку ресурса, например, закрытие файла. Примеры использования Взаимодействие с базой данных:

import sqlite3

with sqlite3.connect('example.db') as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    print(cursor.fetchall())
Соединение с базой данных будет автоматически закрыто, даже если запрос вызовет исключение. Зачем нужен with 🔘Гарантирует, что ресурсы будут освобождены после использования; 🔘Устраняет необходимость в явных блоках try / finally; 🔘Позволяет корректно обрабатывать исключения и освобождать ресурсы даже в случае ошибок; 🔘Повышение читаемости. #основы @zen_of_python

​​tabulate | pretty-printed-таблицы в CLI Библиотека сделает вывод датафрейма в консоль красивой. Поддерживает множество типов итерируемых объектов, может стилизовать вывод под GitHub, PSQL, LaTeX, Jira и проч. Самое оно для красоты в Google Colab. #инструмент @zen_of_python

Функции vs. метод в Python: разница Тем, кто в языке первый год, разница между этими объектами может показаться неочевидной, для них и написан этот лонгрид. Что такое функция? Это блок кода, который принимает входные данные (аргументы), обрабатывает их и возвращает результат. Выделяют два типа: 1️⃣ без побочных эффектов — это чисто математические функции; 2️⃣ с побочными эффектами — функции, которые взаимодействуют с чем-то вне себя, например, с файлом, списком, базой данных или терминалом. Пример чистой функции

def add(a, b):
    return a + b

print(add(2, 3))  # Всегда возвращает 5
Такая функция при одинаковых входных данных всегда возвращает один и тот же результат. Пример функции с побочными эффектами:

import random

def random_point():
    x = random.randint(0, 10)
    y = random.randint(0, 10)
    return x, y

print(random_point())  # Каждый раз возвращает разные значения
Здесь функция использует внешний модуль random, и результат может меняться при каждом вызове. Это и есть побочный эффект. Что такое метод? Это та же функция, которая принадлежит объекту класса. Пока определение запутывает, но посмотрите пример ниже. Здесь set_name — это метод, используемый только для объектов Employee:

class Employee:
    def set_name(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name

# Создаём объекты
emp1 = Employee()
emp2 = Employee()

# Используем метод
emp1.set_name("Alice", "Smith")
emp2.set_name("Bob", "Brown")

print(emp1.first_name, emp1.last_name)  # Alice Smith
print(emp2.first_name, emp2.last_name)  # Bob Brown
#основы @zen_of_python

​​archivey | WinRAR больше не нужен Библиотека предлагает унифицированный способ обращения с архивами .zip, .rar, .tar, .7z и другими форматами. Массовые создание и распаковка, обработка символических ссылок (symlink), управление правами доступа и паролями. #инструмент @zen_of_python

И не дай Бог, pdb (Python Debugger) #кек @zen_of_python
И не дай Бог, pdb (Python Debugger) #кек @zen_of_python

По результатам опроса Python Software Foundation, в 2025 году, доля разработчиков, использующих FastAPI, выросла с 29 до 38%.
По результатам опроса Python Software Foundation, в 2025 году, доля разработчиков, использующих FastAPI, выросла с 29 до 38%. #кек @zen_of_python

raise в реальной жизни #кек @zen_of_python

Питонистам позалипать на вечер: вышла документалка про Python 🖥 История о том, как скромный проект из Амстердама 90-х превра
Питонистам позалипать на вечер: вышла документалка про Python 🖥 История о том, как скромный проект из Амстердама 90-х превратился в движок для AI, дата-сайенса и топовых IT-компаний. За 90 минут документалка охватывает всё: первые коммиты, сомнения в будущем, почти забвение — и путь к славе. В фильме — интервью с Гвидо ван Россумом, Трэвисом Олифантом (создатель NumPy), Барри Варшавом и другими ведущими разработчиками. Они делятся закулисьем жизни Python, моментами разногласий и тем, как язык стал незаменимым… ну, реально для всего.

Requests для начинающих + пара фишек для адептов requests является де-факто стандартом для HTTP-запросов в Python. Она упрощает взаимодействие с веб-сервисами, предоставляя интуитивно понятный интерфейс для отправки запросов и обработки ответов. Инструмент не входит в стандартную библиотеку ЯП, поэтому его необходимо установить отдельно:

python -m pip install requests
Рекомендуется устанавливать внешние пакеты в виртуальное окружение, чтобы избежать конфликтов зависимостей. Основные методы Для получения данных с сервера используется метод GET:

import requests

response = requests.get('https://example.com')
print(response.text)
Для отправки данных на сервер используется метод POST:

import requests

data = {'key': 'value'}
response = requests.post('https://example.com', data=data)
print(response.text)
Ответы сервера Статус-код запроса можно получить так:

print(response.status_code) # 200 — успешный запрос
Если ответ содержит JSON-данные, их можно преобразовать в Python-объект с помощью метода json():

data = response.json()
Параметры запроса (params) Параметры запроса можно передавать в виде словаря в params:

params = {'q': 'python'}
response = requests.get('https://example.com/search', params=params)
Requests автоматически кодирует параметры и добавляет их к URL. Заголовки (Headers) Заголовки запроса можно передавать в виде словаря в параметре headers:

headers = {'User-Agent': 'my-app'}
response = requests.get('https://example.com', headers=headers)
Это полезно для указания типа контента, авторизации и других параметров. Другие HTTP-методы Requests поддерживает все основные HTTP-методы: 🔘requests.put() — для обновления; 🔘requests.delete() — для удаления. 🔘requests.head() — для получения только заголовков ответа; 🔘requests.options() — для получения поддерживаемых сервером методов. Подготовка запроса Requests позволяет подготовить запрос:

from requests import Request, Session

req = Request('GET', 'https://example.com', params={'q': 'python'})
prepared = req.prepare()

with Session() as session:
    response = session.send(prepared)
    print(response.text)
Это полезно, если необходимо многократно отправлять одинаковые запросы с разными параметрами. Аутентификация Requests поддерживает базовую аутентификацию с помощью параметра auth:

from requests.auth import HTTPBasicAuth

response = requests.get('https://example.com', auth=HTTPBasicAuth('user', 'pass'))
Также поддерживаются другие методы аутентификации, такие как OAuth. Безопасность Requests по умолчанию проверяет SSL-сертификаты при работе с HTTPS. Если необходимо отключить проверку (не рекомендуется в производственной среде), можно использовать параметр verify:

response = requests.get('https://example.com', verify=False)
Повторные попытки и сессии Для улучшения производительности и управления соединениями рекомендуется использовать сессии:

with requests.Session() as session:
    response = session.get('https://example.com')
    print(response.text)
Сессии позволяют повторно использовать соединения и сохранять параметры между запросами. Для автоматических повторных попыток в случае неудачи можно использовать библиотеку urllib3 вместе с Requests. #основы @zen_of_python

​​Еще одна схема мошенничества на PyPi: освободившиеся домены PyPI усиливает защиту аккаунтов от атак через «возрождение» доменов. С июня 2025 года система ежедневно проверяет статус доменов, связанных с адресами электронной почты пользователей. Если домен переходит в период восстановления или удаления, PyPI автоматически отменяет верификацию таких адресов, предотвращая возможность захвата аккаунта через сброс пароля. С начала июня более 1 800 адресов были размечены как ненадежные. Пользователям рекомендуется добавить вторичный адрес с надежного почтового сервиса и включить двухфакторную аутентификацию для повышения безопасности. #безопасность @zen_of_python 😈 — Если для мошенников в опенсорсе отдельный котел в аду