Работа с форматированием текста
textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.
Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.
Немного о возможностях:
#python #textwrap
textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.
Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.
Немного о возможностях:
textwrap.fill() — принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.textwrap.dedent() — используется для удаления общего префикса пробела из всех строк в тексте.textwrap.indent() — используется для добавления текст префикса ко всем строкам в параграфе#python #textwrap
❤2😱2
Управление базой данных в Python с Alembic и SQLAlchemy
Сегодня мы поговорим о том, как можно эффективно управлять структурой вашей базы данных в
Что такое Alembic и SQLAlchemy?
Пример использования
1. Установка библиотек:
2. Инициализация Alembic:
3. Определение моделей данных в
4. Создание миграции:
5. Применение миграции:
Теперь вы можете легко управлять структурой базы данных, создавать новые миграции и применять их, чтобы обновить вашу базу данных.
Полезные ссылки:
- SQLAlchemy: https://www.sqlalchemy.org/
- Alembic: https://alembic.sqlalchemy.org/
#python #sqlalchemy #alembic #базаданных #миграции
Сегодня мы поговорим о том, как можно эффективно управлять структурой вашей базы данных в
Python с использованием библиотек Alembic и SQLAlchemy. Эта связка инструментов позволяет легко мигрировать схему базы данных, управлять версиями и обеспечивает удобный способ разработки и поддержки приложений.Что такое Alembic и SQLAlchemy?
SQLAlchemy - это мощная библиотека для работы с базами данных в Python. Она предоставляет ORM (Object-Relational Mapping), что делает работу с базой данных более Pythonic. Вы можете определять модели данных, выполнять запросы и манипулировать данными, используя чистый Python.Alembic - это инструмент для управления миграциями базы данных. Он позволяет создавать и применять миграции для изменения структуры базы данных, такие как создание таблиц, добавление столбцов или изменение индексов.Пример использования
Alembic и SQLAlchemy:1. Установка библиотек:
pip install sqlalchemy alembic
2. Инициализация Alembic:
alembic init my_migration
3. Определение моделей данных в
SQLAlchemy:from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
4. Создание миграции:
alembic revision --autogenerate -m "Create user table"
5. Применение миграции:
alembic upgrade head
Теперь вы можете легко управлять структурой базы данных, создавать новые миграции и применять их, чтобы обновить вашу базу данных.
Полезные ссылки:
- SQLAlchemy: https://www.sqlalchemy.org/
- Alembic: https://alembic.sqlalchemy.org/
#python #sqlalchemy #alembic #базаданных #миграции
❤7👍1
Pyfiglet — генерация ASCII-арт текста
Pyfiglet — это библиотека Python, которая позволяет легко создавать красивый ASCII-арт текст прямо в консоли. Идеально подходит для добавления стилизованных заголовков и баннеров в ваши консольные приложения.
Отличный способ оживить вывод вашего кода и привлечь внимание к важным сообщениям.
Pyfiglet — это библиотека Python, которая позволяет легко создавать красивый ASCII-арт текст прямо в консоли. Идеально подходит для добавления стилизованных заголовков и баннеров в ваши консольные приложения.
Отличный способ оживить вывод вашего кода и привлечь внимание к важным сообщениям.
❤1
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__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
👍5
Хеширование в 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
❤1
Форматируем строку для 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
❤3👍1
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction, который представляет и хранит число в виде рациональной дроби.#числа #fraction
❤1
Отправка электронных писем через 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
❤3
Управление версионностью 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 подходит не только для работы с асинхронными веб-сервисами, но и для асинхронного скрапинга веб-страниц.#модули
❤5👍5
Делаем простой интерфейс используя tkinter
Хотя
#python #tkinter
tkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.Хотя
tkinter может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.#python #tkinter
❤8👍1
Форматирование чисел в 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
👍9❤2🔥1
httpx: Модуль для асинхронных HTTP запросов
Если вы ищете эффективный инструмент для выполнения асинхронных
Установка
Для начала асинхронных запросов, вы будете использовать синтаксис async/await, который позволяет вам создавать асинхронные
Модуль
Работа с ним делает выполнение асинхронных
Код с поста доступен тут
#модули
Если вы ищете эффективный инструмент для выполнения асинхронных
HTTP запросов в приложениях, использующих asyncio, то модуль httpx - ваш выбор. Этот модуль позволяет с легкостью выполнять асинхронные HTTP запросы и является отличным инструментом для приложений, которым требуется высокая производительность и паралельность.Установка
httpx производится с помощью pip командой pip install httpxДля начала асинхронных запросов, вы будете использовать синтаксис async/await, который позволяет вам создавать асинхронные
HTTP запросы. Например, запросы, такие как GET, POST, PUT и DELETE, оформляются очень понятно и прозрачно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.Модуль
httpx идеально подходит для работы с асинхронными веб-сервисами и также может быть использован для асинхронного скрапинга веб-страниц.Работа с ним делает выполнение асинхронных
HTTP запросов удобным и эффективным процессом. Этот модуль предоставляет все необходимые средства для управления вашими HTTP запросами и ответами.Код с поста доступен тут
#модули
❤1
Списковые включения
На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.
Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.
В квадратных скобках вы пишите самую обычную конструкцию цикла
Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.
#списки #словари
На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.
Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.
В квадратных скобках вы пишите самую обычную конструкцию цикла
for, но само выражение ставите перед ключевым словом for. Также можно добавлять условия в конце записи.Как правило, списковые включения работают заметно быстрее, чем циклы. Однако, злоупотреблять этим не рекомендуется, так как это зачастую снижает читаемость кода.
#списки #словари
👍5