PYPROGLIB Telegram 6916
Шпаргалка: типизированные структуры данных в Python

Python поддерживает типизацию с помощью аннотаций, а также предоставляет удобные инструменты для описания структур — TypedDict и dataclasses.

🆖 Typed Dictionaries (Типизированные словари)

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

Пример:
from typing import TypedDict

class Metrics(TypedDict):
accuracy: float
precision: float
recall: float
AUC: float | None # необязательное поле

def evaluate_predictions(y_true: np.ndarray, y_pred: np.ndarray) -> Metrics:
# Возвращаем словарь с метриками
return Metrics(accuracy=0.66, precision=1.0, recall=0.5)

my_metrics = evaluate_predictions(y_true, y_pred)
print(my_metrics) # {'accuracy': 0.66, 'precision': 1.0, 'recall': 0.5}


🆖 Dataclasses (Датаклассы)

Датаклассы упрощают создание классов с данными, автоматически генерируя методы вроде __init__. Можно сделать объекты неизменяемыми с frozen=True.

Пример:
from dataclasses import dataclass

@dataclass(frozen=True)
class ModelConfig:
model_path: str
data_path: str
batch_size: int = 32
learning_rate: float = 1e-3
num_epochs: int = 10
early_stopping: bool = False

config = ModelConfig(model_path="models/v1", data_path="data/train", batch_size=64)
print(config.batch_size) # 64


🆖 Вложенные структуры

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

Пример:
from datetime import datetime

@dataclass
class ExperimentSummary:
datetime: datetime
model_config: ModelConfig
metrics: Metrics

experiment = ExperimentSummary(datetime=datetime.now(), model_config=config, metrics=my_metrics)
print(experiment.model_config.batch_size) # 64


Важные советы:
🔛 Не увлекайтесь глубокой вложенностью! Слишком сложные структуры затрудняют поддержку и понимание.
🔛 Используйте типы для самодокументирования кода. Они помогают избежать ошибок и ускоряют разработку.
🔛 Выбирайте TypedDict, если хотите словарь с проверкой структуры.
🔛 Используйте dataclasses, когда нужна полноценная структура с методами и возможностью наследования.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5👏1👾1



tgoop.com/pyproglib/6916
Create:
Last Update:

Шпаргалка: типизированные структуры данных в Python

Python поддерживает типизацию с помощью аннотаций, а также предоставляет удобные инструменты для описания структур — TypedDict и dataclasses.

🆖 Typed Dictionaries (Типизированные словари)

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

Пример:

from typing import TypedDict

class Metrics(TypedDict):
accuracy: float
precision: float
recall: float
AUC: float | None # необязательное поле

def evaluate_predictions(y_true: np.ndarray, y_pred: np.ndarray) -> Metrics:
# Возвращаем словарь с метриками
return Metrics(accuracy=0.66, precision=1.0, recall=0.5)

my_metrics = evaluate_predictions(y_true, y_pred)
print(my_metrics) # {'accuracy': 0.66, 'precision': 1.0, 'recall': 0.5}


🆖 Dataclasses (Датаклассы)

Датаклассы упрощают создание классов с данными, автоматически генерируя методы вроде __init__. Можно сделать объекты неизменяемыми с frozen=True.

Пример:
from dataclasses import dataclass

@dataclass(frozen=True)
class ModelConfig:
model_path: str
data_path: str
batch_size: int = 32
learning_rate: float = 1e-3
num_epochs: int = 10
early_stopping: bool = False

config = ModelConfig(model_path="models/v1", data_path="data/train", batch_size=64)
print(config.batch_size) # 64


🆖 Вложенные структуры

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

Пример:
from datetime import datetime

@dataclass
class ExperimentSummary:
datetime: datetime
model_config: ModelConfig
metrics: Metrics

experiment = ExperimentSummary(datetime=datetime.now(), model_config=config, metrics=my_metrics)
print(experiment.model_config.batch_size) # 64


Важные советы:
🔛 Не увлекайтесь глубокой вложенностью! Слишком сложные структуры затрудняют поддержку и понимание.
🔛 Используйте типы для самодокументирования кода. Они помогают избежать ошибок и ускоряют разработку.
🔛 Выбирайте TypedDict, если хотите словарь с проверкой структуры.
🔛 Используйте dataclasses, когда нужна полноценная структура с методами и возможностью наследования.

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/6916

View MORE
Open in Telegram


Telegram News

Date: |

To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. Telegram offers a powerful toolset that allows businesses to create and manage channels, groups, and bots to broadcast messages, engage in conversations, and offer reliable customer support via bots. The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021.
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American