Zen of Python
20.1K subscribers
1.22K photos
162 videos
32 files
3.17K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Byte of Python | Бесплатный учебник, ставший классикой

Сейчас лето, и при должном везении ваш работодатель слегка расслабился. Можно и книжку почитать.
«Укус питона» — известный бесплатный учебник, который можно скачать в форматах .pdf / .epub вместе с Python-скриптами прямо из репозитория автора Сварупа.

Спасибо @Chellbas за рекомендацию.
#основы
@zen_of_python
7
Жизненный цикл объекта — настоящего питониста

#кек
@zen_of_python
🔥11👍52😭2
Forwarded from IT Юмор
От перевёрнутого логотипа С++ из глаз пошла кровь...

@ithumor
😁33
vulnhuntr | Пусть уязвимости ищет LLM

Хватит уже плодить небезопасный нагенеренный код... Лучше искать с помощью ChatGPT / Cursor / Claude дыры в системах. Библиотека сканирует весь код питонического проекта и находит прорехи по типу SSRF, XSS и проч.

#инструмент
@zen_of_python
👍3
argparse: зачем нужен и при чем здесь sys.argv()?

При создании скриптов, которые запускаются из командной строки, часто возникает необходимость принимать аргументы. Чтобы эффективно разбирать и обрабатывать эти параметры, в стандартной библиотеке Python есть модуль argparse. В этом лонгриде мы покажем на примере, как его использовать, покажем взаимосвязь с sys.argv.


➡️ Какую роль играет sys.argv?

sys.argv — это список, содержащий аргументы командной строки, с которыми был запущен скрипт. Первый элемент списка sys.argv[0] — это имя самого скрипта.

Например, если вы вызовете скрипт так:


python script.py filename.txt -v


то выведется такой перечень:


import sys

print(sys.argv) # ['script.py', 'filename.txt', '-v']


Однако sys.argv — это просто список строк, и если работать с ним вручную, то придётся самостоятельно обрабатывать порядок, типы данных, проверять правильность и т.п., что может стать сложной задачей. Здесь на помощь приходит argparse. Он автоматизирует парсинг аргументов и предоставляет удобные способы проверки параметров CLI.


➡️ argparse: как с ним обращаться

argparse позволяет описать, какие параметры принимает ваш скрипт, какие из них обязательны, какие опциональны, какие могут быть флагами (включить / выключить). Он также автоматически генерирует справку и обрабатывает ошибки в вводе.

Часто бывает так, что скрипт требует передать обязательный параметр — имя файла. Это называется позиционным аргументом, так как его положение в командной строке имеет значение.


import argparse

# Создаём парсер
parser = argparse.ArgumentParser(description='Обработка файла.') # Создаем объект ArgumentParser;

# Добавляем позиционный аргумент 'filename'
parser.add_argument('filename', help='имя файла для обработки') # Добавляем описание каждого аргумента или опции

# Разбираем аргументы командной строки
args = parser.parse_args() # Разберём аргументы sys.argv

# Fргументы доступны как атрибуты: args.filename
print(f'Обрабатываем файл: {args.filename}')


Теперь, если запустить скрипт так:


python script.py example.txt


Программа выведет:


Обрабатываем файл: example.txt


Если попытаться запустить без аргумента:


python script.py


то argparse автоматически покажет сообщение об ошибке и краткую справку:


usage: script.py [-h] filename
script.py: error: the following arguments are required: filename


Документация
#основы
@zen_of_python
🙏 — Если спасибо за такой контент
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏8
Forwarded from Нейроканал
Разработчики всё меньше доверяют ИИ, хоть и чаще к нему обращаются...

Stack Overflow провели большое исследование, в результате которого выяснили, что лишь 29% опрошенных считают ИИ надёжным.

Эти и другие любопытные факты — по ссылке.

#для_АйтИИ
1
void | Опенсорсный Cursor

Клоны Cursor сыплются, как из рога изобилия в 2025 году. Все, как и везде: автокомплиты, чатик в окне справа, UI — как у еще одного форка VSCode. Множество популярных условно-бесплатных LLM (DeepSeek, Llama, Gemini, Qwen) или ваша оплаченная альтернатива вроде Gemini 2.5, Claude 3.7, Grok 3, o4-mini, and Qwen 3.

#инструмент
@zen_of_python
👍1🌚1
Data Engineering Landscape

Просить собрать вас бинго не буду, но так в 2025 году выглядит подборка топовых продуктов по 11 категориям.

А что бы вы сюда добавили из наших, импортозамещающих продуктов? Как минимум ClickHouse напрашивается.

#факт
@zen_of_python
🔥2
Паттерн Mediator | Что это и зачем нужен

Mediator — паттерн проектирования, который вводит объект-посредник для координации взаимодействий между другими объектами. Вместо того, чтобы объекты напрямую вызывали методы друг друга и пытались «договариваться», они отправляют сообщения посреднику, а он решает, кто и как должен на них отреагировать. Классическая аналогия — диспетчерская в аэропорту: пилоты не связываются друг с другом напрямую, а говорят с диспетчером.

При прямой связи «каждый с каждым» количество зависимостей растёт как квадрат числа компонентов: изменения в одном классе часто заставляют править десятки других. Посредник помещает логику взаимодействия в одну точку:


class Mediator:
"""Интерфейс медиатора."""
def notify(self, sender, event):
raise NotImplementedError

class CourseMediator(Mediator):
"""Конкретный медиатор — координатор курсов и пользователей."""
def __init__(self):
self.users = []

def register(self, user):
self.users.append(user)
user.mediator = self

def notify(self, sender, course_name):
# В простом варианте медиатор просто логирует сообщение
print(f"[{sender}] выбрал курс: {course_name}")
# Можно добавить дополнительную логику: фильтрация, отправка уведомлений и т.п.

class User:
def __init__(self, name):
self.name = name
self.mediator = None

def send_course(self, course_name):
if not self.mediator:
raise RuntimeError("User не зарегистрирован у медиатора")
self.mediator.notify(self, course_name)

def __str__(self):
return self.name


m = CourseMediator()
u1 = User("Майкл"); u2 = User("Оля")
m.register(u1); m.register(u2)
u1.send_course("DSA")
u2.send_course("Software Development")


User не знает про других пользователей. Вся координация — в CourseMediator. Такой подход облегчает изменение логики (например, добавить рассылку уведомлений другим пользователям) без модификации User. Медиатор снижает связанность (Coupling) между компонентами и упрощает поддержку.


Плюсы

1️⃣ Централизация логики взаимодействия (проще править и тестировать).
2️⃣ Снижение связности между компонентами.
3️⃣ Легче добавлять новые стратегии взаимодействия, не меняя классы коллег.

Минусы

1️⃣ Риск «божественного объекта» (God Object): медиатор может накопить слишком много логики и стать сложным.
2️⃣ Централизация порождает узкое место — медиатор становится более сложным и менее прозрачным.

#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
Больше не элита

Канадский писатель и активист Кори Доктороу анализировал изменения в положении IT-специалистов. Он отмечает, что раньше разработчики пользовались высоким спросом, что позволяло им диктовать условия труда. Однако в последние годы ситуация изменилась: компании начали массовые сокращения, увеличили нагрузку на оставшихся сотрудников и усилили контроль за их работой. Доктороу подчеркивает, что разработчики больше не являются «принцами труда» и теперь сталкиваются с теми же проблемами, что и рабочие на заводах или в доставке. Он призывает к солидарности и созданию профсоюзов как способу защиты прав работников в новых условиях рынка труда.

@zen_of_python
8
Офер в Яндекс за 48 часов: ищут бэкендеров

Яндекс приглашает на Мультитрек — онлайн-программу быстрой адаптации. В команду нужны опытные бэкенд-разработчики на C++, Python, Java и Go.

Всего за 2 дня вы можете получить офер:
• До 18 августа — подать заявку и пройти предварительный отбор;
• 23 августа — решить задачи на технических секциях;
• 24 августа — пройти финальное собеседование и получить офер.

После этого вы получите возможность поработать с тремя командами и выбрать проект по душе.

Присоединяйтесь к команде, которая создаёт технологии, меняющие мир.

Оставляйте заявку на сайте

Это #партнёрский пост
👍2🙈1
This media is not supported in your browser
VIEW IN TELEGRAM
Взгляните на IT-мир по-новому

12 сентября. Топовые IT-компании. Закулисье разработок и доклады экспертов. Ещё не знаете, о чём речь? Сейчас расскажем!

Приглашаем вас на big tech night. Событие придумали в Яндексе и организовали вместе со Сбером, X5, Т-Банком и Lamoda. Впервые компании одновременно откроют двери офисов ночью и покажут IT-специалистам, где рождаются технологии.

▶️ В московских офисах организаторов вы:
• послушаете доклады топовых экспертов,
• обсудите новейшие разработки,
• познакомитесь с крутыми профессионалами,
• и просто повеселитесь.

▶️ Если не сможете прийти офлайн, big tech night организует онлайн-студию. Зрители смогут:
• посмотреть выступления спикеров от каждой компании,
• послушать дебаты о технологиях,
• поучаствовать в интерактивах,
• получить записи докладов после мероприятия.

Регистрируйтесь на сайте и присоединяйтесь к нам 12 сентября с 18:00 до 00:00!

Подписывайтесь:
big tech night

Реклама. Рекламодатель: ООО "Яндекс" ИНН 7736207543

Это #партнёрский пост
👎1