Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤6👍3
В мире Python программирования, логирование играет важную роль в отслеживании работы приложений и выявлении ошибок. Одним из самых удобных и мощных инструментов для этой задачи является библиотека Loguru. В этом посте мы рассмотрим основные преимущества и возможности Loguru, которые делают его отличным выбором для логирования в Python.
Одним из основных преимуществ Loguru является его простота использования. В отличие от стандартной библиотеки logging, которая может показаться сложной и громоздкой, Loguru предлагает простой и интуитивно понятный интерфейс. Для начала работы достаточно импортировать библиотеку и начать логирование с помощью одной строки кода:
from loguru import logger
logger.info("Привет, Loguru!")
Это позволяет значительно сократить время на настройку и сразу приступить к логированию.
Loguru предоставляет широкие возможности для настройки логирования. Вы можете легко настроить формат сообщений, уровни логирования и маршрутизацию логов. Например, вы можете отправлять логи в разные файлы в зависимости от их уровня важности:
logger.add("debug.log", level="DEBUG")
logger.add("error.log", level="ERROR")
logger.debug("Это сообщение для отладки")
logger.error("Это сообщение об ошибке")Или же отправлять их на удалённый сервер для дальнейшего анализа. Библиотека также поддерживает асинхронное логирование, что делает её отличным выбором для высоконагруженных приложений.
Помимо стандартных возможностей логирования, Loguru включает в себя множество дополнительных функций, которые делают его ещё более привлекательным. Например, библиотека поддерживает автоматическое добавление контекстной информации к логам, такую как имя функции, строка кода и т.д. Также существует возможность автоматического ротации логов, что позволяет избежать переполнения дискового пространства:
logger.add("file_{time}.log", rotation="500 MB")
logger.info("Это сообщение будет записано в новый файл при достижении лимита в 500 MB")Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥2
👍6🤨4❤2😐1
А var2 - список, который содержит в себе только 1 элемент —> var (как бы ссылаясь на него)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓7🔥5👍4
delorean является её простота использования. Она предоставляет разработчикам возможность легко создавать, манипулировать и форматировать временные объекты.import delorean
# Создание объекта текущего времени
now = delorean.now()
print("Текущее время:", now)
# Преобразование времени в строку в формате ISO
iso_format = now.datetime.isoformat()
print("ISO формат:", iso_format)
Работа с временными зонами может быть сложной задачей, но delorean значительно облегчает этот процесс. Библиотека предоставляет удобные методы для преобразования времени между разными временными зонами, учитывая все нюансы и правила переходов между летним и стандартным временем. Это делает её незаменимым инструментом для приложений, которые должны учитывать временные зоны своих пользователей.
import delorean
# Создание объекта времени в определённой временной зоне
dt = delorean.parse("2023-10-10 10:00:00", timezone="UTC")
# Преобразование времени в другую временную зону
local_dt = dt.shift("US/Eastern")
print("Время в восточной временной зоне США:", local_dt)
Еще одной важной функцией delorean является работа с временными интервалами. Библиотека позволяет легко вычислять разницу между двумя временными точками, а также добавлять или вычитать временные интервалы. Это делает её полезной для задач, связанных с планированием, аналитикой и многими другими областями, где важна точная работа с временными данными.
import delorean
# Создание двух объектов времени
start = delorean.parse("2023-10-10 10:00:00")
end = delorean.parse("2023-10-10 12:30:00")
# Вычисление разницы между двумя временными точками
diff = end - start
print("Разница во времени:", diff)
# Добавление временного интервала
new_time = start + delorean.timedelta(hours=2)
print("Новое время:", new_time)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍7🔥2😐1
pip install pywebview
После установки pywebview, давайте создадим простое окно, которое будет отображать наш веб-контент. Вот базовый пример:
import webview
# Создаем окно с URL
webview.create_window('Пример pywebview', '<https://example.com>')
# Запускаем приложение
webview.start()
Больше примеров и документации: https://github.com/r0x0r/pywebview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥3
Одним из ключевых преимуществ python-nubia является её простота и удобство использования. Библиотека позволяет легко создавать командные интерфейсы, используя аннотации и декораторы. Это делает код более читабельным и поддерживаемым. Разработчики могут быстро добавлять новые команды и опции, что значительно ускоряет процесс разработки.
Python-nubia предоставляет разработчикам высокую степень гибкости и расширяемости. Библиотека поддерживает регистрацию пользовательских команд, создание сложных иерархий команд и даже интеграцию с другими библиотеками. Это делает её отличным выбором для проектов, требующих сложных командных интерфейсов. Несмотря на то, что библиотека больше не развивается, её архитектура и подходы могут быть полезны для изучения и использования в других проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
🤨8👍3🤔2👀1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥1
Numba - это JIT-компилятор (Just-In-Time), который преобразует Python и NumPy код в быстрый машинный код. Это позволяет значительно ускорить выполнение вычислительно-интенсивных задач.
Использовать Numba очень просто! Вот пример:
from numba import jit
import numpy as np
@jit(nopython=True)
def sum_of_squares(arr):
sum = 0
for i in range(arr.shape[0]):
sum += arr[i]**2
return sum
# Пример использования
arr = np.arange(1000000)
result = sum_of_squares(arr)
print(f"Сумма квадратов: {result}")
На больших массивах Numba может ускорить код в десятки раз! Например, для массива из миллиона элементов:
- Обычный Python: ~1 секунда
- С Numba: ~0.01 секунды
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
Что выдаст код выше?
Anonymous Quiz
19%
[[1, 2, 3], [4, 5]]
63%
[[1, 2, 3], [4, 5, 6]]
10%
[[1, 2, 3], [4, 5, (6,)]]
8%
Error
👍6🤔5❤1🤓1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥2
Декораторы в Python - это мощный инструмент для изменения поведения функций или классов без изменения их исходного кода. Они позволяют "обернуть" существующую функцию дополнительной функциональностью.
При создании декораторов возникает проблема: метаданные декорируемой функции (такие как имя и документация) теряются. Здесь на помощь приходит functools.wraps!
def my_decorator(func):
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper
@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")
print(greet.__name__) # Выводит: wrapper
print(greet.__doc__) # Выводит: None
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper
@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")
print(greet.__name__) # Выводит: greet
print(greet.__doc__) # Выводит: Эта функция приветствует пользователя
functools.wraps:1. Сохранение метаданных функции
2. Улучшение отладки и документирования
3. Совместимость с инструментами анализа кода
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥3
Слабые ссылки позволяют ссылаться на объект без увеличения его счетчика ссылок. Это означает, что объект может быть удален сборщиком мусора, даже если на него есть слабая ссылка.
import weakref
class MyClass:
pass
obj = MyClass()
weak_ref = weakref.ref(obj)
print(weak_ref()) # Выводит объект MyClass
del obj
print(weak_ref()) # Выводит None
Использование модуля weakref позволяет разработчикам Python лучше контролировать управление памятью в своих программах. Это особенно полезно при работе с большими объемами данных или в системах с ограниченными ресурсами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🔥6👍4❤2
# Legacy код на Python
def calculate_total(items):
total = 0
for item in items:
total = total + item['price'] * item['quantity']
return total
# Современный эквивалент
def calculate_total(items):
return sum(item['price'] * item['quantity'] for item in items)
Работа с Legacy кодом - это неизбежная часть жизни многих разработчиков. Хотя он может представлять сложности, правильный подход к его обработке может значительно улучшить качество и поддерживаемость программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥3
Для начала работы с FastStream, установите библиотеку с помощью pip:
pip install faststream
from faststream import FastStream, Logger
from faststream.kafka import KafkaBroker
# Создаем брокер Kafka
broker = KafkaBroker("localhost:9092")
# Инициализируем FastStream
app = FastStream(broker)
# Определяем обработчик сообщений
@broker.subscriber("input-topic")
async def process_message(msg: str, logger: Logger):
logger.info(f"Получено сообщение: {msg}")
# Обработка сообщения
processed_msg = msg.upper()
# Отправка обработанного сообщения
await broker.publish(processed_msg, "output-topic")
# Запускаем приложение
if __name__ == "__main__":
app.run()
1. Импортируем необходимые модули из FastStream.
2. Создаем брокер Kafka, указывая адрес сервера.
3. Инициализируем FastStream с нашим брокером.
4. Определяем функцию-обработчик сообщений с декоратором @broker.subscriber.
5. В обработчике мы логируем полученное сообщение, преобразуем его в верхний регистр и отправляем в другую тему.
6. Запускаем приложение с помощью app.run().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥3