Python Academy – Telegram
Python Academy
46.8K subscribers
1.27K photos
3 videos
426 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML

PyYAML позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language), который широко используется для конфигураций, настроек и обмена данными в структурированной форме.

import yaml

data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)

with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")


Результат (файл example.yaml):
age: 30
city: Example City
name: John Doe

В этом примере мы используем PyYAML для записи словаря data_to_write в файл example.yaml и затем загружаем данные из этого файла обратно в переменную loaded_data.

Библиотека PyYAML предоставляет удобные средства для работы с данными в формате YAML в Python. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML имеет преимущество, PyYAML обеспечивает легкость в использовании и читаемый код🐍

#python #yaml #pyyaml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Внедрение асинхронных задач с Taskiq

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

Принцип работы с Taskiq прост и интуитивно понятен, что демонстрируется на примерах в документации. Для примера использования библиотеки Taskiq, предположим, что вы хотите асинхронно отправить email без блокирования основного потока выполнения вашего приложения. В этом примере мы создали простую асинхронную задачу для отправки email с использованием Taskiq.

Установка Taskiq производится через менеджер пакетов pip. Более подробно о возможностях и применении библиотеки можно узнать в официальной документации.

#python #taskiq
👍6
Упрощенная работа с JSON

Казалось бы, куда еще проще, но есть один интересный пакет JMESpath, который позволяет декларативно указать, как извлекать элементы из документа JSON.

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

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

#json #jmespath
🔥2
Применяем pathlib взамен os

В Python 3 стандартная библиотека включает модуль pathlib, предоставляющий функцию Path, которая обеспечивает все необходимое для эффективной работы с путями к файлам.

Одно из наиболее впечатляющих преимуществ использования pathlib - это упрощение работы с путями за счет использования Path вместо os.path.join, представляя более простой и изящный метод, как показано на изображении.

В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля os, таким как os.mkdir или os.path, на более удобные альтернативы.

#path #os
🔥43
Вычисление размера объектов

Для вычисления размера объекта мы можем использовать функцию getsizeof(object[, default]) из модуля sys. Так как в python все по сути является объектами, то и вычислить размер в памяти мы можем у любого такого объекта.

И хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.

Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .

Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора.

#getsizeof
🔥3
Временные файлы

В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями.

Функция TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.

Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера.

Также другие процессы и приложения не смогут получить доступ к этому временному файлу.

#tempfile
6👍1
Параллельное Исполнение в Python с Помощью Модуля threading

В данном посте, вы узнаете, как использовать модуль threading для создания параллельных потоков выполнения и улучшения производительности ваших приложений.

threading позволяет создавать легковесные потоки, которые выполняются параллельно, ускоряя выполнение задач. Это особенно полезно в сценариях, где есть задачи, которые можно выполнить независимо друг от друга.

Пример:

import threading
import time

# Функция, которую будем выполнять в параллельных потоках
def print_numbers():
for i in range(5):
time.sleep(1) # Эмулируем длительную операцию
print(f"Thread {threading.current_thread().name}: {i}")

# Создаем два потока
thread1 = threading.Thread(target=print_numbers, name="Thread 1")
thread2 = threading.Thread(target=print_numbers, name="Thread 2")

# Запускаем потоки
thread1.start()
thread2.start()

# Ожидаем завершения потоков перед завершением программы
thread1.join()
thread2.join()

print("Главный поток выполнения завершен.")


В данном примере создаются два потока, каждый из которых выполняет функцию print_numbers, эмулируя длительную операцию с использованием time.sleep. Запуск потоков осуществляется с помощью метода start(), и главный поток ожидает их завершения с использованием метода join().

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

#python #threading
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Работа с форматированием текста

textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.

Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.

Немного о возможностях:

textwrap.fill() — принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.

textwrap.dedent() — используется для удаления общего префикса пробела из всех строк в тексте.

textwrap.indent() — используется для добавления текст префикса ко всем строкам в параграфе

#python #textwrap
3 интересных функции в random

Этот пост более для тех, у кого есть соответствующий бэкграунд и кто хочет знать про random больше среднего.

betavariate() — используется для получения случайного числа с плавающей запятой от 0 до 1 на основе бета-распределения (применяется для статистических расчетов).

gauss() — генерирует случайное число с плавающей запятой на основе распределения Гаусса (используется в теории вероятности).

paretovariate() — возвращает случайное число с плавающей запятой на основе распределения Парето (используется в теории вероятности).

Кстати, можете посмотреть на графиках результаты вызова этих функций по 100к раз тут, тут и тут.

#random
3👍3
Аргументы и параметры командной строки

Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль argparse.

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

Первым параметром add_argument принимает либо имя обязательного позиционного аргумента, либо список опционального аргумента (опциональный аргумент идентифицируется через -). Также у add_argument есть множество необязательных опциональных параметров для работы с передаваемым значением аргумента, о них можете почитать в данной статье.

После добавления всех аргументов, нам нужно их спарсить с помощью метода parse_args, на выходе мы получим объект со всеми содержащимися аргументами.

#argparse
👍2
Создаем словарь из набора ключей

Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).

Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.

#словари #fromkeys
4🔥2