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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Библиотека 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
👍72🗿2
Что выдаст код выше
Anonymous Quiz
36%
{1, 2, 3}
7%
{1, 1, 2, 3}
28%
{1, 2, 3, 1}
29%
Error
🤯7👍3🤔3👀21
🤔Разбор

Тут банально будет ошибка, потому что мы не можем складывать между собой множества.
Если бы мы хотели добавить элемент, мы бы писали a.add(1).


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6🔥3😁2
✈️lambda — это анонимная функция, которая записывается в одну строку и не требует def. Используется там, где нужна простая операция без имени функции.

➡️ Пример. Обычная функция vs. lambda:
def square(x):
return x ** 2

square_lambda = lambda x: x ** 2

print(square(5)) # 25
print(square_lambda(5)) # 25


➡️Где используется?
1. map() — Применение функции к списку
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16]


2. filter() — Фильтрация данных
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # [2, 4]


3. sorted() — Сортировка по ключу
pairs = [(1, 'one'), (3, 'three'), (2, 'two')]
pairs.sort(key=lambda x: x[0])
print(pairs) # [(1, 'one'), (2, 'two'), (3, 'three')]


💡Когда использовать lambda?
- Когда функция простая и короткая
- Когда она нужна один раз

💡Не стоит использовать lambda, если логика сложная – лучше писать def.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥4