Поиск по каналам Каналы в закладках Мои каналы Поиск постов
Инструменты
Мониторинг упоминаний Детальная статистика Анализ аудитории Telegraph-статьи Бот аналитики
Полезная информация
Инструкция Telemetr Документация к API Чат Telemetr
Полезные сервисы
Защита от накрутки Создать своего бота Продать/Купить канал Монетизация

Телеграм канал «Постоянный репозиторий по Python»

Постоянный репозиторий по Python
191
0
1
0
366
Подписчики
Всего
1 646
Сегодня
-1
Просмотров на пост
Всего
236
ER
Общий
14.36%
Суточный
11.7%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 191 постов
Смотреть все посты
Пост от 27.06.2025 10:07
2
0
0
Язык программирования Python предоставляет мощные и удобные средства для автоматизации работы с Docker. Это особенно актуально в задачах DevOps, непрерывной интеграции и развёртывания (CI/CD), тестирования и создании воспроизводимых сред. Самый прямой и рекомендуемый способ взаимодействия с Docker из Python — использование официальной библиотеки docker, также известной как docker-py. Она позволяет программно управлять контейнерами, образами, томами, сетями и прочими сущностями Docker. Установив её через pip install docker, можно, например, запускать контейнеры, отслеживать их статус, получать логи или даже строить образы из Dockerfile. Простейший пример — запуск контейнера Ubuntu, который выполняет команду echo, выглядит так: import docker client = docker.from_env() container = client.containers.run("ubuntu:latest", command="echo Hello", detach=True) print(container.logs().decode()) Подобный подход позволяет встраивать Docker-процессы прямо в Python-приложения. Например, можно автоматически запускать тесты в контейнере, создавать временные окружения для задач машинного обучения, или управлять микросервисами. Помимо использования docker-py, часто удобно обращаться к Docker через вызов CLI-команд с помощью модуля subprocess. Это может быть полезно в тех случаях, когда достаточно просто выполнить знакомую команду, как если бы вы делали это в терминале. Например, запуск контейнера можно реализовать так: import subprocess subprocess.run(["docker", "run", "--rm", "ubuntu", "echo", "Hello from CLI"]) Такой способ прост и универсален, особенно если не требуется глубокая интеграция с Docker API. Его часто используют в скриптах для автоматизации, где важна прозрачность и совместимость. Автоматизацию можно расширить на работу с docker-compose. Например, запуск многоконтейнерного окружения по заранее описанному docker-compose.yml легко автоматизируется через тот же subprocess: subprocess.run(["docker-compose", "up", "-d"]) Благодаря этим возможностям Python часто используется как связующее звено в автоматизации развёртывания. Скрипты на Python можно интегрировать в пайплайны GitHub Actions, GitLab CI, Jenkins и других систем, чтобы автоматически строить образы, публиковать их в реестр, запускать или перезапускать контейнеры в продакшене. Кроме того, Python позволяет организовать мониторинг и управление контейнерами в реальном времени. Например, можно написать скрипт, который будет отслеживать все запущенные контейнеры и перезапускать те, что остановились: for container in client.containers.list(all=True): if container.status != "running": container.restart() Таким образом, Python отлично подходит для автоматизации всей работы с Docker — от простых CLI-обёрток до полной интеграции с Docker API. Это делает его удобным инструментом для разработчиков, системных администраторов и DevOps-инженеров, стремящихся к более гибкому и управляемому процессу разработки и развертывания.
🔥 1
Пост от 26.06.2025 12:16
10
0
0
🔥 1
Пост от 26.06.2025 12:16
1
0
0
Изображение
Пост от 19.06.2025 10:14
3
0
0
🔥 1
Пост от 19.06.2025 10:14
192
0
0
Изображение
1
Пост от 18.06.2025 10:20
53
0
0
В Python хэшируемыми называются объекты, которые могут быть использованы в качестве ключей в словарях (dict) или помещены в множества (set). Для этого объект должен реализовывать два условия: 1. Иметь корректно определённый метод __hash__, возвращающий целое число — хэш-значение объекта. 2. Иметь определённый метод __eq__, корректно сравнивающий два объекта на равенство. Хэширование позволяет Python быстро определять местоположение объекта в хеш-таблицах, которые лежат в основе словарей и множеств. 1. Метод __hash__ Метод __hash__ возвращает целое число, которое должно оставаться неизменным в течение жизни объекта. Правило: • Если два объекта равны (a == b), то их хэши должны быть равны (hash(a) == hash(b)). • Но из равенства хэшей не следует равенство объектов (разные объекты могут иметь одинаковый хэш – коллизия). class Person: def __init__(self, name, age): self.name = name self.age = age def __hash__(self): return hash((self.name, self.age)) def __eq__(self, other): if not isinstance(other, Person): return NotImplemented return self.name == other.name and self.age == other.age В данном примере: • Хэш объекта Person считается по кортежу (name, age) – стандартный способ, обеспечивающий стабильный и хороший хэш. • Метод __eq__ обеспечивает корректное сравнение двух объектов. Теперь объекты Person можно использовать в set и как ключи в dict: p1 = Person("Alice", 30) p2 = Person("Alice", 30) p3 = Person("Bob", 25) people_set = {p1, p2, p3} print(len(people_set)) # 2, потому что p1 и p2 равны 2. Важные тонкости: • Если вы переопределяете __eq__, но не переопределяете __hash__, объект становится нехэшируемым (будет ошибка при попытке добавить его в set или использовать как ключ в dict), чтобы избежать неконсистентного поведения. • Если объект неизменяемый (например, строки, числа, кортежи из неизменяемых объектов), то стандартная реализация __hash__ уже корректна. • Для изменяемых объектов (например, классов с изменяемыми полями) нужно быть особенно осторожным: изменение полей, участвующих в вычислении хэша, приведёт к нарушению целостности структуры данных. Пример некорректного использования: p = Person("Alice", 30) s = {p} p.age = 31 # изменили поле, участвующее в hash() print(p in s) # может дать False, т.к. хэш изменился Поэтому хорошая практика – делать хэшируемыми только неизменяемые объекты, либо запрещать изменение полей, участвующих в __hash__. 3. Если класс не должен быть хэшируемым Если вы хотите сделать объект намеренно не хэшируемым (например, чтобы случайно его не использовали в set), можно написать: __hash__ = None Тогда любые попытки использовать объект в качестве ключа вызовут исключение TypeError.
🔥 1
Пост от 14.06.2025 11:15
16
0
0
🔥 1
Смотреть все посты