PyOxidizer
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
🔥11👍4❤1
dict.get()
Синтаксис метода
#python
dict.get()
— это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (dict[key]
), метод get()
предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре.Синтаксис метода
get()
выглядит так:value = dict.get(key, default)
key
: Ключ, по которому производится поиск в словаре.default
(необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если default
не указан, и ключ не найден, метод вернет None
.#python
👍9
Упрощенная работа с JSON
Казалось бы, куда еще проще, но есть один интересный пакет
Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
Казалось бы, куда еще проще, но есть один интересный пакет
JMESpath
, который позволяет декларативно указать, как извлекать элементы из документа JSON. Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
search
принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON). Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
❤4
Порядок разрешения методов
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
__mro__
. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value
, Python будет искать сначала в классе A
, далее в B
, затем в C
и в самом конце в object
. Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
👍1
Перечисления
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
Из документации можно узнать о том, что
Также можно задать геттер через
#enum
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
enum
. Подобные перечисления удобно использовать для хранения списков констант. Из документации можно узнать о том, что
Enum
— это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.Также можно задать геттер через
@property
, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex
.#enum
👍5❤1
Время исполнения программы
Зачастую требуется замерить время исполнения кода, чтобы понять, насколько оптимальное решение было выбрано.
Как вариант, можно воспользоваться функцией
Перед исполнением нашего кода сохраним начальное время, а после — конечное. Путем вычета первого из второго и получим время исполнения программы.
Использование
#time
Зачастую требуется замерить время исполнения кода, чтобы понять, насколько оптимальное решение было выбрано.
Как вариант, можно воспользоваться функцией
time
из модуля time
, которая возвращает текущее время в формате Unix.Перед исполнением нашего кода сохраним начальное время, а после — конечное. Путем вычета первого из второго и получим время исполнения программы.
Использование
time.time()
— не самый точный и лучший вариант, но, например, для быстрого сравнения двух разных частей кода подходит хорошо.#time
🔥1
Упрощение создания операторов сравнения
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
В таком случае достаточно реализовать в классе только
#классы
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
__lt__
, __le__
, __eq__
, __ne__
, __gt__
, __ge__
.Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
total_ordering
из пакета functools
.В таком случае достаточно реализовать в классе только
__lt__
и __eq__
. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
👍4
Хеширование в Python используя hashlib
Библиотека
Пример кода:
Библиотека
#python #hashlib
Библиотека
hashlib
предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.Пример кода:
import hashlibВ этом примере мы используем алгоритм
# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()
print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
SHA-256
из библиотеки hashlib
для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.Библиотека
hashlib
является одним из лучших инструментов для обеспечения безопасности данных в Python
. Путем использования различных алгоритмов хеширования, таких как MD5
, SHA-256
и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.#python #hashlib
Форматируем строку для URL-адреса
Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.
Чаще всего такое понятие можно встретить в контексте URL-адресов. Например, можно формировать слаг из названия какой-нибудь статьи и вставлять его в ссылку, чтобы людям было понятно, куда они переходят.
Выше в коде мы написали простую функцию, где использовали методы
Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет
#python #re
Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.
Чаще всего такое понятие можно встретить в контексте URL-адресов. Например, можно формировать слаг из названия какой-нибудь статьи и вставлять его в ссылку, чтобы людям было понятно, куда они переходят.
Выше в коде мы написали простую функцию, где использовали методы
lower()
для приведения в нижний регистр и strip()
для удаления пробелов слева и справа. Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет
re
для работы с ними. #python #re
❤2
Работа с данными в Python используя Pydantic
Этот инструмент особенно полезен при работе с
Для более подробного примера и документации можно обратиться сюда.
#python #pydantic
Pydantic
- это библиотека для Python
, предназначенная для парсинга и валидации данных. Она использует статическую типизацию для атрибутов классов, что облегчает проверку данных при создании объектов.Этот инструмент особенно полезен при работе с
JSON
: он автоматизирует проверку структуры, необходимых полей и значений. Pydantic
поддерживает не только стандартные типы данных, но и специализированные, такие как email, URL-адреса и номера платежных карт.Для более подробного примера и документации можно обратиться сюда.
#python #pydantic
❤2👍1
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction
Отправка электронных писем через SMTP в Python
Для установления соединения с почтовым сервером используется класс
Авторизация на сервере осуществляется с использованием метода
Для отправки электронных писем используется метод
Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
#python #smtp #smtplib
SMTP (Simple Mail Transfer Protocol)
- это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке Python
доступен пакет smtplib
, который реализует функциональность SMTP
.Для установления соединения с почтовым сервером используется класс
SMTP_SSL
, который также обеспечивает шифрование данных. Для этого классу передаются адрес сервера и порт.Авторизация на сервере осуществляется с использованием метода
login
, в который передаются логин и пароль пользователя.Для отправки электронных писем используется метод
sendmail
, который принимает адрес отправителя, адрес получателя и текст сообщения. Важно отметить, что в конце написаного кода следует закрыть соединение с сервером с помощью метода quit()
.Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
smtplib
для отправки электронного письма:import smtplib
smtp_server = "smtp.example.com"
smtp_port = 465 # SSL-порт
smtp_username = "your_username"
smtp_password = "your_password"
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(smtp_username, smtp_password)
from_email = "[email protected]"
to_email = "[email protected]"
subject = "Тема письма"
message = "Текст письма"
server.sendmail(from_email, to_email, f"Subject: {subject}\n\n{message}")
server.quit()
#python #smtp #smtplib
❤2
Управление версионностью Python с помощью pyenv
Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.
Возможности
- Изменение глобальной версии
- Управление версиями
- Переопределение версии
- Поиск и выполнение команд сразу из нескольких версий
#pyenv
Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.
Возможности
pyenv
включают:- Изменение глобальной версии
Python
для пользователя;- Управление версиями
Python
для индивидуальных проектов;- Переопределение версии
Python
через переменную среды;- Поиск и выполнение команд сразу из нескольких версий
Python
.#pyenv
❤2
Асинхронные запросы с aiohttp
Модуль
Установка
Модуль
#модули
Модуль
aiohttp
представляет из себя асинхронный HTTP клиент/сервер для asyncio
и Python. Он позволяет выполнять асинхронные HTTP запросы, что делает его идеальным инструментом для современных приложений, где требуется высокая производительность и параллелизм.Установка
aiohttp
производится через pip. Чтобы начать делать асинхронные запросы, вам потребуется взаимодействовать с ним с помощью синтаксиса async/await
. Запросы, такие как GET, POST, PUT и DELETE, оформляются чисто и ясно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.Модуль
aiohttp
подходит не только для работы с асинхронными веб-сервисами, но и для асинхронного скрапинга веб-страниц.#модули
❤4👍4
Делаем простой интерфейс используя tkinter
Хотя
#python #tkinter
tkinter
- это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python
. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.Хотя
tkinter
может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python
, такими как PyQt
или wxPython
, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.#python #tkinter
❤8👍1
Частая проблема: вроде всё красиво, у вас GPT, LangChain, промпт отлажен, а ответы всё равно какие-то… странные. То он придумывает ссылки, то не знает очевидного.
Это не баг, просто ему неоткуда взять актуальные данные. И вот тут как раз нужен RAG, когда для LLM подкладывают реальные факты из базы знаний.
На вебинаре Яндекса 14 августа покажут, как собрать это на практике:
— Посчитать эмбеддинги
— Положить их в YDB с индексом
— Искать быстро, с фильтрацией, на SQL
Если делаете внутренние ИИ-инструменты, обязательно подключайтесь.
Это не баг, просто ему неоткуда взять актуальные данные. И вот тут как раз нужен RAG, когда для LLM подкладывают реальные факты из базы знаний.
На вебинаре Яндекса 14 августа покажут, как собрать это на практике:
— Посчитать эмбеддинги
— Положить их в YDB с индексом
— Искать быстро, с фильтрацией, на SQL
Если делаете внутренние ИИ-инструменты, обязательно подключайтесь.
❤2
Форматирование чисел в f-строках
Начиная с версии Python 3.6, стали доступны f-строки. Это удобный способ форматирования текста. Но не все знают, что он умеет вставлять float числа с настраиваемым количеством знаков после запятой.
Допустим у нас есть float число
#fstring
Начиная с версии Python 3.6, стали доступны f-строки. Это удобный способ форматирования текста. Но не все знают, что он умеет вставлять float числа с настраиваемым количеством знаков после запятой.
Допустим у нас есть float число
pi = 3.14159265359
. Если мы его просто скорвертируем в строку, то она примет следующий вид: >>> str(3.14159265359)
'3.14159265359'
Но что если важно выписать только до сотых долей? Делается это черех f-строку: >>> f'Число Пи это {pi:.2f}'
'Число Пи это 3.14'
После обьявления имени переменной мы вставляем следующую комбинацию: .2f
, где цифра как раз и указывает, сколько знаков после запятой нужно преобразовать в строку. Более подробно это описано в PEP 498.#fstring
👍8❤1🔥1
httpx: Модуль для асинхронных HTTP запросов
Если вы ищете эффективный инструмент для выполнения асинхронных
Установка
Для начала асинхронных запросов, вы будете использовать синтаксис async/await, который позволяет вам создавать асинхронные
Модуль
Работа с ним делает выполнение асинхронных
Код с поста доступен тут
#модули
Если вы ищете эффективный инструмент для выполнения асинхронных
HTTP
запросов в приложениях, использующих asyncio
, то модуль httpx
- ваш выбор. Этот модуль позволяет с легкостью выполнять асинхронные HTTP
запросы и является отличным инструментом для приложений, которым требуется высокая производительность и паралельность.Установка
httpx
производится с помощью pip
командой pip install httpx
Для начала асинхронных запросов, вы будете использовать синтаксис async/await, который позволяет вам создавать асинхронные
HTTP
запросы. Например, запросы, такие как GET
, POST
, PUT
и DELETE
, оформляются очень понятно и прозрачно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.Модуль
httpx
идеально подходит для работы с асинхронными веб-сервисами и также может быть использован для асинхронного скрапинга веб-страниц.Работа с ним делает выполнение асинхронных
HTTP
запросов удобным и эффективным процессом. Этот модуль предоставляет все необходимые средства для управления вашими HTTP
запросами и ответами.Код с поста доступен тут
#модули
Списковые включения
На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.
Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.
В квадратных скобках вы пишите самую обычную конструкцию цикла
Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.
#списки #словари
На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.
Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.
В квадратных скобках вы пишите самую обычную конструкцию цикла
for
, но само выражение ставите перед ключевым словом for
. Также можно добавлять условия в конце записи.Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.
#списки #словари
👍5
Метод join у строк
У строк есть полезный метод
Как результат получаем новую строку, которая является объединением всех элементов. При этом они разделены строкой, к которой изначально применялся метод.
Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке.
#строки
У строк есть полезный метод
str.join()
, который принимает на вход итерируемый объект, элементами которого также должны быть строки.Как результат получаем новую строку, которая является объединением всех элементов. При этом они разделены строкой, к которой изначально применялся метод.
Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке.
#строки
👍4
Преобразование текста в аудио на Python
Используя библиотеку
Для начала работы с
Чтобы сохранить синтезированную речь в аудиофайл, используется метод
#python #gtts
Используя библиотеку
gTTS (Google Text-to-Speech)
для Python
, можно легко преобразовывать текст в аудиофайлы. Эта библиотека использует API Google Translate
для синтеза речи, обеспечивая высокое качество преобразования. Установка библиотеки производится стандартным способом через pip
.Для начала работы с
gTTS
необходимо создать его экземпляр, передав текст, который нужно озвучить, в качестве первого аргумента. Также есть возможность указать язык озвучивания через опциональный аргумент, который по умолчанию установлен на английский.Чтобы сохранить синтезированную речь в аудиофайл, используется метод
save
, аргументом которого является имя файла.#python #gtts
❤1