Правильные аннотации *args и **kwargs в Python

preview_player
Показать описание
Объясняю и показываю как аннотировать *args и **kwargs в Python. Почему именно так правильно ставить аннотации.

Рекомендации по теме
Комментарии
Автор

Круто, спасибо. Никогда даже и не задавался поднятым в видео вопросом, теперь буду знать, благодарю

ravenq
Автор

Вот так можно принтить чтобы автоматически подставлялся результат:

def true_div(a: float, b: float) -> float:
return a / b

print(f'{true_div(1, 2) = }')

ЕгорПономарев-бб
Автор

Сурен, а будет ли видос по архитектуре приложений? Сейчас делаю телеграм бот с БД и бекендом. Там раскидано всё по отдельным модулям но всё равно как мусорка выглядит. Посоветуете какой нибуть курс по теме очень инетерсно.

-mishana-
Автор

В Go указываешь numbers …int и можно сколько хочешь передавать значений

nonamenoname
Автор

Неплохо) Про аннотации е знал (или благополучно забыл).

MAKS
Автор

Можно так же рассмотреть использование Unpack: *args: Unpack[tuple[int, str]], и Unpack[TypedDict] для **kwargs

xth
Автор

Просто оставлю это тут.
T = TypeVar("T")
P = ParamSpec("P")
def decorator(func: Callable[P, T]) -> Callable[P, T]:
@wraps(func)
def wrapped(*args: P.args, **kwargs: P.kwargs) -> T:
return func(*args, **kwargs)
return wrapped

_dzen_tv_
Автор

Суурен напиши пожалуйста, , это используется?

Pavel-et
Автор

from typing import ParamSpec

P = ParamSpec('P')

def func(*args: P.args, **kwargs: P.kwargs):
...

felixua
Автор

За tuple[int, ...] лайк!
Гугел tuple озвучивает как 'тапл', а не 'тюпл'😊

ziond