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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️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
✈️При вызове скрипта Python можно указать различные параметры/флаги для большей гибкости. Вот наиболее часто используемые варианты:

* -h или --help: Выводит справку по доступным флагам.

* -V или --version: Выводит номер версии Python.

* -m <module>: Запускает модуль как скрипт (например, python -m venv venv).

* -c <command>: Выполняет указанную команду Python (например, python -c "print('Hello, World!')").

* -i: Включает интерактивный режим REPL после выполнения скрипта.

* -O: Включает оптимизацию байт-кода (удаляет операторы assert и любой код, зависящий от значения __debug__).

* -OO: Более агрессивная оптимизация, удаляющая docstrings.

* -B: Отключает создание файлов .pyc (с компилированным байт-кодом).

* -W: Контролировать частоту вывода предупреждений.

💡Это лишь некоторые из наиболее распространенных флагов.
🔗 подробнее

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥1👌1
✈️Модуль string в Python предоставляет ряд полезных констант, которые помогают работать со строками более эффективно и удобно.

➡️Основной список:
1. string.ascii_letters: Содержит все буквы английского алфавита (как заглавные, так и строчные).
2. string.digits: Включает все десятичные цифры от 0 до 9.
3. string.hexdigits: Содержит шестнадцатеричные цифры (0-9 и a-f, A-F).
4. string.octdigits: Включает восьмеричные цифры (0-7).
5. string.punctuation: Содержит все знаки пунктуации.
6. string.whitespace: Включает все пробельные символы (пробелы, табуляции и переносы строк).

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

# Функция проверяет, состоит ли строка только из букв
def is_alpha(s):
return all(char in string.ascii_letters for char in s)

# Тестируем функцию
print(is_alpha("HelloWorld")) # Вывод: True
print(is_alpha("Hello World!")) # Вывод: False


💡Заключение
Константы из модуля string значительно упрощают обработку строк и могут быть использованы в различных алгоритмах, таких как валидация ввода, фильтрация символов и т.д.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
✈️Одним из основных преимуществ Pendulum является возможность легко создавать и форматировать даты. Давайте рассмотрим пример:
import pendulum

# Создание даты
date = pendulum.datetime(2023, 10, 5)

# Форматирование даты
formatted_date = date.format('YYYY-MM-DD')
print(formatted_date) # Вывод: 2023-10-05


⬆️С помощью Pendulum вы можете легко создавать даты и форматировать их в нужный формат с помощью метода format.

➡️Работа с временными зонами

Pendulum значительно упрощает работу с временными зонами. Пример создания даты в одной временной зоне и её преобразования в другую:
# Создание даты в временной зоне 'Europe/Moscow'
moscow_time = pendulum.datetime(2023, 10, 5, tz='Europe/Moscow')
print(moscow_time) # Вывод: 2023-10-05T00:00:00+03:00

# Преобразование в другую временную зону
ny_time = moscow_time.in_timezone('America/New_York')
print(ny_time) # Вывод: 2023-10-04T17:00:00-04:00


⬆️С Pendulum работа с временными зонами становится интуитивно понятной и простой!

➡️Различные операции с датами

Pendulum предоставляет широкий набор методов для выполнения различных операций с датами. Пример добавления и вычитания временных интервалов:
# Создание даты
date = pendulum.datetime(2023, 10, 5)

# Добавление 5 дней
new_date = date.add(days=5)
print(new_date) # Вывод: 2023-10-10T00:00:00+00:00

# Вычитание 2 часов
new_date = date.subtract(hours=2)
print(new_date) # Вывод: 2023-10-04T22:00:00+00:00


⬆️С методами add и subtract вы можете легко выполнять арифметические операции с датами, что делает работу с временными интервалами очень удобной.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥3
✈️git merge объединяет две ветки, создавая новый коммит, который объединяет изменения из обеих веток.
Это означает, что вся история обеих веток сохраняется, и создается так называемый "слияние" (merge commit).

✈️git rebase позволяет переназначить (переписать) коммиты из одной ветки на другую.
Это создаёт новое основание для вашей ветки и делает историю более линейной, очищая её от избыточных merge-коммитов.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥32
✈️Байтовые объекты представляют собой последовательность байтов, которая хранит информацию в двоичном формате.

➡️В Python байтовые объекты представлены типами данных bytes и bytearray. Различие заключается в том, что bytes является неизменяемым типом данных, в то время как bytearray - изменяемым.

Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.

Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").

➡️В Python также существует модуль struct, который позволяет работать с байтовыми данными на низком уровне, осуществляя их упаковку и распаковку.

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

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

➡️Комбинации с примерами и краткими описаниями:

1. Распаковка в несколько переменных:
a, b, c = 1, 2, 3
# a = 1, b = 2, c = 3


➡️Присваивание значений из кортежа переменным.

2. Распаковка посимвольно в строки:
a, b = "12"
# a = '1', b = '2'


➡️Разделение строки на отдельные символы и присваивание их переменным.

3. Распаковка с использованием звёздочки (*):
a, *b = 1, 2, 3
# a = 1, b = [2, 3]


➡️Сбор оставшихся значений в список с использованием звёздочки.

4. Распаковка в переменную со звёздочкой (*):
a, *b, c = 1, 2, 3, 4
# a = 1, b = [2, 3], c = 4


➡️Присваивание первого и последнего значения, а остаток помещается в список.

5. Игнорирование значений при распаковке:
a, _, b = 7, 8, 9
# a = 7, b = 9 (значение 8 игнорируется)


Пропуск значений, которые не нужны при присвоении.

➡️Различные итерируемые объекты:
Можно использовать любые итерируемые объекты, такие как списки, кортежи, строки, объекты, поддерживающие итерацию и даже функция range():

- Список:
a, b, c = [4, 5, 6]
# a = 4, b = 5, c = 6


- Кортеж:
x, y = (10, 20)
# x = 10, y = 20


- Строка:
char1, char2, char3 = "xyz"
# char1 = 'x', char2 = 'y', char3 = 'z'


- Использование range():
a, b, c = range(1, 4)
# a = 1, b = 2, c = 3


💡Заключение:
Распаковка значений в Python - удобный и эффективный способ присваивания значений переменным из итерируемых объектов, делая код более читаемым и компактным. Это дает гибкость при работе с данными различных типов и структур.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍741🔥1