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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️httpdbg – это инструмент для отладки HTTP-запросов в Python. Он перехватывает и логирует все исходящие запросы, помогая быстро находить ошибки в работе с API.

➡️Ключевая функция:
Позволяет в реальном времени видеть все HTTP-запросы, включая URL, заголовки и тело, без модификации кода.

➡️Пример использования:
import httpdbg  
import requests

with httpdbg.init() as records:
requests.get("https://api.example.com/data")

for record in records:
print(record) # вывод деталей запроса


🖥GitHub

💡Заключение:
httpdbg автоматизирует отладку HTTP-взаимодействий, экономя время на ручном анализе запросов. Отлично подходит для тестирования API и веб-скрапинга!

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2
✈️Radon – это инструмент для статического анализа Python-кода, который вычисляет метрики сложности, такие как цикломатическая сложность и индекс поддерживаемости.

➡️Основная задача:
Автоматически оценивать сложность кода и выявлять потенциально проблемные участки.

➡️Пример использования:
# Анализ цикломатической функции
from radon.complexity import cc_visit

code = """
def example(x):
if x > 0:
return x + 1
else:
return x - 1
"""

result = cc_visit(code)
print(result) # Выводит метрики сложности


🖥GitHub

💡Главный плюс:
Radon помогает поддерживать чистый и читаемый код, автоматизируя анализ сложности и интеграцию в CI/CD.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍1🔥1
✈️Python-Statemachine - библиотека которая помогает удобно управлять переходами между разными состояниями в программе. Например, как светофор меняет цвета: «зелёный → жёлтый → красный».

➡️Она поможет избежать хаоса в коде, когда у вас много условий типа «если состояние X, то сделать Y». Вместо этого вы описываете логику переходов один раз — и библиотека сама следит за правильностью.

➡️Пример (как сделать светофор):
from statemachine import StateMachine, State

class TrafficLight(StateMachine):
green = State('Зелёный', initial=True) # Начинаем с зелёного
yellow = State('Жёлтый')
red = State('Красный')

switch = (
green.to(yellow) # Зелёный → Жёлтый
| yellow.to(red) # Жёлтый → Красный
| red.to(green) # Красный → Зелёный
)

light = TrafficLight()
light.switch() # Меняем состояние
print(light.current_state) # Теперь "Жёлтый"


💡Заключеие:
Всё наглядно: состояния и переходы видны сразу, а не спрятаны в куче if-else. Подходит для любых процессов, где есть чёткие этапы — от игр до бизнес-логики.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2
🔥3👍21🤓1
Что выдаст код выше
Anonymous Quiz
48%
True
25%
False
5%
None
23%
Error
🤯7👍2🤨1
🤔Разбор

В Python кортежи сравниваются лексикографически (поэлементно, слева направо).
Сначала сравниваются первые элементы: 100 > 1 → True.
Если первые элементы равны, сравниваются вторые элементы. Но в данном случае первое сравнение уже даёт результат

Ответ: A


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥4👍1
✈️PySimpleGUI — это популярный фреймворк для создания простых графических интерфейсов пользователя.
Он позволяет быстро создавать интерфейсы при помощи Python, без необходимости изучать сложные GUI библиотеки, такие как Tkinter, Qt или wxPython.

➡️PySimpleGUI широко используется для создания небольших утилит и инструментов с GUI, например:
— Простые GUI для скриптов автоматизации.
— Инструменты для обработки и визуализации данных.
— Маленькие вспомогательные приложения для повседневных задач.

💡Основные преимущества PySimpleGUI:
- Простой и интуитивно понятный синтаксис.
- Кроссплатформенность: работает на Windows, MacOS, Linux.
- Встроенная поддержка многих виджетов и тем оформления.
- Автоматическое размещение элементов GUI.

🖥GitHub

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥1👻1
✈️Pandera — это удобный инструмент для проверки структуры и содержимого данных в Python. Он работает как дополнительный слой валидации поверх pandas DataFrame и других структур данных, помогая выявлять ошибки на ранних этапах обработки.

➡️Основные применения:
- Определение схемы. Например, схема, которая проверяет, что столбец 1 должен быть целым числом, большим 0, а столбец 2 — строкой с более чем 5 символами.

- Проверка данных с помощью схемы. Например, если создать фрейм данных с отрицательным значением в столбце 1, проверка завершится ошибкой, так как это не соответствует требованиям схемы.

- Проверка нескольких фреймов данных. Pandera позволяет определять схемы с проверками по нескольким столбцам. Например, схема, которая проверяет, что сумма столбцов 1 и 2 больше 0.

🖥 GitHub

💡Основная задача Pandera — гарантировать соответствие данных ожидаемой схеме: типам, диапазонам значений и бизнес-правилам.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
✈️keyboard - Эта библиотека позволяет полностью контролировать клавиатуру в Python - перехватывать нажатия, эмулировать ввод и создавать "горячие клавиши".

➡️ Главная функция:
перехват и эмуляция любых клавиатурных событий на низком уровне.

🖥 GitHub

💡Преимущества:
- Поддержка глобальных хоткеев (работают даже когда окно не в фокусе)
- Простая эмуляция нажатий клавиш
- Кроссплатформенность (Windows/Linu).

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
✈️Пространство имён в Python гарантирует, что имена объектов в программе остаются уникальными и могут использоваться без конфликтов.

➡️Рассмотрим основные типы пространств имён:

- Локальное пространство имён содержит имена, определённые внутри функции. Оно создаётся временно при вызове функции и удаляется после её завершения.

- Глобальное пространство имён включает имена из импортированных модулей и пакетов, используемых в проекте. Оно формируется при импорте модуля и существует до завершения работы скрипта.

- Встроенное пространство имён содержит встроенные функции Python и зарезервированные имена для различных типов исключений.

➡️Пример:
x = 10  # Глобальное

def foo():
x = 5 # Локальное
print(x) # Выведет 5 (локальное)

foo()
print(x) # Выведет 10 (глобальное)


💡В Python пространства имён реализованы как словари, где «имя» выступает ключом, а «объект» — соответствующим значением.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
✈️Иногда нужно пропустить определённые исключения, не оборачивая код в громоздкий try/except.
Для этого есть suppress() из модуля contextlib.


➡️Пример:
from contextlib import suppress

data = {"a": 1}

with suppress(KeyError):
print(data["b"]) # Ошибка будет проигнорирована

print("Код продолжает работать")

Код продолжает работать


💡Удобно, когда ошибка допустима и не требует обработки — например, при удалении файла, который может отсутствовать.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
✈️Функция isinstance() проверяет, относится ли объект к указанному типу (или кортежу типов).
Полезно для валидации данных и написания универсальных функций.


➡️Пример:
x = 3.14

if isinstance(x, (int, float)):
print("Это число")

Это число


💡isinstance() в отдельных случаях удобнее и безопаснее, чем привычное сравнение через type().

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥32
👍5🤝1
Что выдаст код выше
Anonymous Quiz
1%
[3, 2, 1, "a"]
52%
[1, 2, 3, "a"]
18%
["a", 1, 2, 3]
29%
TypeError
🤔4👌2👍1
🤔Разбор

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


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62👍2😁2
✈️frozenset — это множество, элементы которого нельзя изменять после создания. Оно поддерживает те же операции, что и обычный set: объединение, пересечение, разность.

➡️Пример:
a = frozenset([1, 2, 3])
b = frozenset([3, 4, 5])

print(a & b) # пересечение → frozenset({3})


💡Удобно, когда нужно использовать множество как ключ в словаре или элемент другого множества

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🔥2
✈️Sidecar — это архитектурный паттерн, когда рядом с основным сервисом запускается отдельный контейнер, который выполняет вспомогательные задачи.

➡️Что обычно выносят в sidecar:
— логирование и сбор метрик
— прокси для сетевых запросов
— сервис Mesh (например, Istio Envoy)
— мониторинг и безопасность

💡Преимущества:
— основной сервис остаётся «чистым» и сосредоточенным только на бизнес-логике
— независимое обновление и масштабирование sidecar
— одинаковый подход к инфраструктуре (единые логеры, агенты метрик и т.д.)

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2
✈️Функция globals() возвращает словарь всех глобальных переменных текущего модуля.
Можно использовать для динамического доступа к переменным по имени.


➡️Пример:
x = 42
name = "Python"

print(globals()["x"]) # 42
print(globals()["name"]) # Python


💡Заключение:
Полезно для отладки, метапрограммирования и работы с динамическими именами, но в обычном коде лучше использовать напрямую

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
✈️Казалось бы, куда еще проще, но есть один интересный пакет JMESpath, который позволяет декларативно указать, как извлекать элементы из документа JSON.

➡️Основные примеры использования:
import jmespath

jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
# output: 'baz'

jmespath.search('foo.*.name', {'foo': {'bar': {'name': 'one'}, 'baz':
{'name': 'two'}}})
# output: ['one', 'two']

⬆️Тут нет ничего сложного. Метод search принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON).

➡️Возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее можно почитать в документации.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
✈️В Python целые числа имеют "бесконечную" точность. Это означает, что вы можете работать с целыми числами любого размера, не беспокоясь о переполнении.

➡️Например, давайте возьмем число 2 и возведем его в степень 1000:
print(2**1000)


➡️Результат:
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376


⬆️Это число содержит 302 цифры!

➡️В других языках программирования, таких как C или Java, вы бы столкнулись с ограничениями при работе с такими большими числами. Но в Python вы можете спокойно работать с числами практически любого размера.

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

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

В целом, эта особенность Python делает его очень мощным инструментом для работы с целыми числами любого размера.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3🔥2