Pythoner
7.23K subscribers
859 photos
27 videos
4 files
653 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Python использует оптимизации хранения неизменяемых объектов, чтобы ускорить работу и экономить память.

➡️Small Integer Cache
Числа от -5 до 256 кешируются и переиспользуются:
a = 256
b = 256
print(a is b) # True

c = 257
d = 257
print(c is d) # False (новые объекты)

🔫Это работает, потому что Python заранее создаёт эти числа в памяти.

➡️String Interning
Короткие строки и строки, состоящие только из букв и _, могут кешироваться:
s1 = "hello"
s2 = "hello"
print(s1 is s2) # True

s3 = "hello world!"
s4 = "hello world!"
print(s3 is s4) # False (слишком длинная строка)

🔫Используется в компиляторе Python для ускорения работы со строками.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2🔥21
✈️Метод .bit_count() - это новый метод в Python, который возвращает количество единичных битов в двоичном представлении числа. Этот метод был впервые введен в Python 3.10 и может быть очень полезен в некоторых специфических сценариях.

➡️Как использовать .bit_count()?
Для использования метода .bit_count() вам просто нужно вызвать его на числовом значении. Это возвращает количество единичных битов в двоичном представлении числа. Например, число 7 в двоичном формате представляется как 111. (3 по 1)
print((7).bit_count())  # выводит: 3


➡️Когда .bit_count() был введен?
Метод .bit_count() был введен в Python 3.10. Этот метод был добавлен для более эффективной работы с битами и двоичными данными.

➡️Примеры использования .bit_count()
# Пример с маской подсети
subnet_mask = 0b11111111_11111111_11111111_00000000
print(subnet_mask.bit_count()) # выводит: 24

# Пример с битовым флагом
bit_flag = 0b1001
print(bit_flag.bit_count()) # выводит: 2


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2
➡️PostgreSQL

PostgreSQL - это реляционная система управления базами данных (СУБД), использующая язык SQL для запросов. Она была разработана в университете Беркли и является одной из самых надежных и производительных СУБД на рынке. PostgreSQL предоставляет мощные функциональные возможности, включая поддержку многопользовательских сред и транзакций. PostgreSQL также имеет встроенную поддержку геоданных и полнотекстового поиска.

➡️MySQL

MySQL - это также реляционная СУБД, которая используется для хранения и управления данными. MySQL была приобретена компанией Oracle Corporation в 2010 году. MySQL является одной из самых популярных СУБД на рынке, и она широко используется в веб-разработке. MySQL предоставляет множество функций, включая поддержку транзакций и многопользовательских сред, а также хорошо работает с большими объемами данных.

➡️При сравнении PostgreSQL и MySQL можно сказать, что обе СУБД имеют свои преимущества и недостатки. PostgreSQL обычно используется в крупных проектах, где необходима высокая надежность и производительность. Она также имеет более продвинутые функциональные возможности, такие как поддержка геоданных и полнотекстового поиска. Однако PostgreSQL может быть сложной для настройки и использования, особенно для новичков.

➡️MySQL, с другой стороны, обычно используется для небольших и средних проектов. Она легче в использовании и настройке, чем PostgreSQL, и предоставляет хорошую производительность для больших объемов данных. Однако MySQL имеет ограниченную поддержку функций и может быть менее надежной, чем PostgreSQL.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥2
✈️Docker - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковать приложения и все необходимые для их работы компоненты в одну единицу, которая может быть легко перенесена между окружениями.

➡️Контейнеры и образы

Docker использует контейнеры для упаковки и запуска приложений. Контейнеры представляют собой изолированные среды, которые содержат все необходимые компоненты для работы приложения. Контейнеры создаются из образов, которые являются основой для контейнеров. Образы содержат все необходимые компоненты, включая операционную систему, библиотеки и зависимости приложения.

➡️Dockerfile

Dockerfile - это текстовый файл, который содержит инструкции для создания Docker-образа. Dockerfile определяет операционную систему, настройки окружения, установку зависимостей и т. д. Создание Docker-образа с помощью Dockerfile позволяет автоматизировать процесс сборки и развертывания приложения.

➡️Docker Compose

Docker Compose - это инструмент для определения и запуска многоконтейнерных Docker-приложений. Docker Compose использует файл docker-compose.yml для определения сервисов, которые необходимо запустить, а также их настроек. Docker Compose позволяет легко запускать и масштабировать приложения, состоящие из нескольких сервисов.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106🔥2
✈️Библиотека itertools позволяет легко работать с перестановками и комбинациями.

➡️Перестановки (permutations) создают все возможные порядки элементов:
from itertools import permutations

items = [1, 2, 3]
print(list(permutations(items, 2)))
# [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]


➡️Комбинации (combinations) выбирают элементы без учета порядка:
from itertools import combinations

print(list(combinations(items, 2)))
# [(1, 2), (1, 3), (2, 3)]


💡Заключение:
Это очень полезно для генерации вариантов решений, паролей или анализа данных!

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥3
✈️Когда ваша функция часто вызывается с одинаковыми параметрами, можно значительно повысить её производительность с помощью кэширования. В Python для этого есть удобный декоратор functools.lru_cache(), который запоминает результаты вызовов и при повторных обращениях с теми же аргументами просто возвращает сохранённый результат, не выполняя вычисления заново.

➡️Пример использования:
from functools import lru_cache

@lru_cache(maxsize=128) # Ограничиваем объем кэша
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)

print(factorial(50)) # Результат будет кэширован


💡Как работает?
- При первом вызове функции с определёнными аргументами результат сохраняется в кэше.
- При последующих вызовах с теми же аргументами результат берётся из кэша без повторных вычислений.
- Когда кэш заполняется, старые записи удаляются согласно принципу LRU (Least Recently Used — наименее часто используемые).

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6🔥4
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣125🔥3😁2👍1
✈️FastAPI поддерживает механизм Content Negotiation — это способ договориться, в каком формате клиент хочет получить ответ: JSON, HTML, XML и т.д.

➡️Как это работает?
Клиент отправляет в заголовке:
Accept: application/json

FastAPI проверяет Accept и возвращает наиболее подходящий формат, если он доступен.

➡️Пример:
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse, HTMLResponse

app = FastAPI()

@app.get("/")
async def get_root(request: Request):
if "text/html" in request.headers.get("accept", ""):
return HTMLResponse(content="<h1>Hello, HTML!</h1>")
return JSONResponse(content={"message": "Hello, JSON!"})


🔫В зависимости от Accept, клиент получит либо JSON, либо HTML.

➡️Подходит для:

• REST API с возможностью HTML-ответа (Swagger, docs)
• API, которые отдают разный формат в зависимости от платформы (например, Web vs Mobile)

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6🔥4
✈️DevToys — это локальный инструмент, который спасает, когда JSON не читается, JWT не декодируется, а timestamp — просто набор цифр.

➡️Что Умеет DevToys:
- JSON / XML / YAML форматтер — красиво, читаемо, валидно
- Base64 / URL / HTML кодировщик-декодер
- UUID генератор — новый мир — новый ID
- JWT декодер — без онлайн-сервисов
- Хеши — MD5, SHA1, SHA256, SHA512, Bcrypt
- Regex тестер — проверяй регулярки на лету
- Timestamp - Читаемая дата
- Color Converter — RGB - HEX
- Lorem Ipsum генератор — и ещё 20+ утилит

💡Почему стоит попробовать:
- Работает офлайн — никакие данные не уходят в интернет
- Простой и быстрый UI
- Поддержка темной темы
- Полностью бесплатно и с открытым кодом

Полезные ссылки:
Microsoft Store
GitHub

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥4
➡️Patroni — это мощное и гибкое решение для управления высокодоступными кластерами PostgreSQL. Он выполняет роль внешнего сервиса по отношению к PostgreSQL, действуя как менеджер кластера.

➡️Основной задачей Patroni является обеспечение надежного переключения роли ведущего узла на резервный узел, что критически важно для высокодоступных систем.

Полезные ссылки:
Документация
GitHub

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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3🔥3
5👍4🔥2😐1
Что выдаст код выше
Anonymous Quiz
6%
True
62%
6
6%
False
13%
Python
13%
Error
👍8🤔4🔥2🤨1
🤔Разбор

Лямбда-функция проверяет, является ли x числом (int). Если нет, возвращает длину x.
Для строки "Python": isinstance("Python", int) → False, поэтому возвращается len("Python") → 6.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
BrOk — графический дизайнер интеграционных процессов от AXENIX

🔥 BrOk — это low-code решение для работы с брокерами сообщений (Kafka, RabbitMQ, Artemis, Redis MQ, NATS), СУБД, REST-сервисами и хранилищами данных (ETCD, Redis). Всё управление — через единый GUI, без лишних CLI-команд.

Для кого: разработчики, DevOps и QA, которые настраивают интеграции, тестируют нагрузку или управляют обменом данными.

Что умеет BrOk:

🔸 Подключение к брокерам, БД, REST-API, ETCD и Redis в одном интерфейсе

🔸 Генерация сообщений по шаблонам для тестов

🔸 Low-code сценарии с ретраями и расписанием

🔸 Поддержка Postman и OpenAPI-коллекций

🔸 Инструменты для Kafka: KsqlDB, Connect, Schema Registry

🔥 Главное — BrOk распространяется бесплатно для некоммерческого использования.

Скачайте дистрибутив на официальном сайте и упростите разработку и тестирование сложных информационных систем уже сегодня!

Реклама. ООО «Акстим Тех». ИНН 6950259732
3
✈️HTTPie — это утилита (CLI и веб-приложение), которая помогает удобно отправлять HTTP-запросы к API. Заменяет curl и делает твою жизнь проще, особенно если ты тестируешь REST или GraphQL.

➡️Запросы выглядят читаемо:
http GET https://api.example.com/users  
http POST https://api.example.com/users name=Alice

А ответы приходят красиво: цветной и форматированный JSON, заголовки, статусы — всё как на ладони

➡️Что умеет:
- Простая альтернатива curl
- Авторизация: Basic, Bearer, OAuth
- Поддержка JSON, форм, файлов, заголовков
- Веб-версия и десктоп-приложение
- Кроссплатформенно (Windows / macOS / Linux)

Полезные ссылки:
Официальный сайт
GitHub

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65👍5
✈️itertools.cycle создаёт бесконечный итератор, который зацикливает последовательность, перезапуская её с начала после завершения.

➡️Пример:
from itertools import cycle

colors = ["red", "green", "blue"]
color_cycle = cycle(colors)

for _ in range(5):
print(next(color_cycle)) # red → green → blue → red → green


➡️Зачем использовать?
- Повторение элементов списка без переписывания вручную.
- Автоматическое зацикливание без индексов.
- Полезно в анимациях, смене тем, бесконечных процессах.

💡Заключение:
itertools.cycle — мощный инструмент для циклических операций без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥4
✈️В Python есть два специальных декоратора для методов класса: @staticmethod и @classmethod. Они позволяют работать без создания экземпляра, но имеют ключевые различия.

➡️Пример:
class Example:
class_attr = "Hello"

@staticmethod
def static_method():
return "I'm a static method"

@classmethod
def class_method(cls):
return f"Class method: {cls.class_attr}"

print(Example.static_method()) # I'm a static method
print(Example.class_method()) # Class method: Hello

@staticmethod ведёт себя как обычная функция внутри класса, не имея доступа к атрибутам класса или экземпляра. @classmethod, наоборот, получает ссылку на класс (cls) и может изменять его атрибуты.

💡Заключение:
Используйте @staticmethod для независимых функций, а @classmethod, когда нужно работать с самим классом.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🔥2
✈️В настоящее время многие веб-приложения используют RestApi. RestApi - это аббревиатура от Representational State Transfer Application Programming Interface. RestApi - это набор протоколов и правил, используемых для создания веб-сервисов, которые могут взаимодействовать друг с другом.

➡️Основные принципы RestApi

RestApi работает на основе нескольких принципов. Один из них - это использование универсальных интерфейсов. Это означает, что клиенты и серверы должны использовать общие методы передачи данных, такие как HTTP-протоколы GET, POST, PUT и DELETE.

Другой принцип - это использование ресурсов. Ресурсы - это общие сущности, которые могут быть представлены в виде URL-адресов. Например, веб-сервис может представлять собой коллекцию пользователей, каждый из которых является отдельным ресурсом.

➡️Преимущества RestApi

- RestApi имеет множество преимуществ. Одно из них - это возможность создания универсальных веб-сервисов, которые могут взаимодействовать с любым клиентом, который может использовать общие методы передачи данных.

- RestApi также обеспечивает гибкость и масштабируемость веб-сервисов. Это означает, что веб-сервисы могут легко добавляться и масштабироваться по мере необходимости.

💡Наконец, RestApi обеспечивает безопасность веб-сервисов. Он может использовать стандартные методы аутентификации и авторизации, такие как OAuth, для обеспечения безопасности и конфиденциальности передаваемых данных.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥3
✈️super() позволяет вызывать методы родительского класса, обеспечивая правильное наследование и расширение функционала.

➡️Пример:
class Parent:
def greet(self):
return "Hello from Parent"

class Child(Parent):
def greet(self):
return super().greet() + " and Child"

obj = Child()
print(obj.greet()) # "Hello from Parent and Child"


💡super() особенно полезен при множественном наследовании, так как помогает вызывать методы родительских классов без явного указания их имен.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥43
✈️yield используется для создания генераторов, которые возвращают данные по мере запроса, вместо хранения всего результата в памяти.

➡️Пример:
def count_up_to(n):
count = 1
while count <= n:
yield count # Возвращает значение и приостанавливает выполнение
count += 1

for num in count_up_to(5):
print(num)


💡yield позволяет приостанавливать и возобновлять выполнение функции, экономя память и упрощая работу с потоками данных.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2👏1