ar
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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام 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 😈 — Если для мошенников в опенсорсе отдельный котел в аду