вернуть -> List[...], а сейчас можно просто -> [dict] сделать? Или лучше List[dict]?
list[dict]
С десктопа не получается поставить лайк на сообщение, спасибо 👍
реакции тут отключены
typing.List и товарищи, кстати, deprecated. Так что если нет нужны поддерживать версии ниже 3.9, используй list[dict] и импорты ABC (Iterable, Iterator, Callable, ...) из collections.abc
глядишь и typing депрекейтнут
У ABC, Iterable, Iterator и тд для другого нужны
а как же TypeVar и Generic. Куда их?
Не ну ты конечно можешь в тайпхинтах использовать их из collections , возможно даже сам typing берет их оттуда (не знаю) Из collections они нужны в основном для проверки объекта на некоторый интерфейс
https://www.python.org/dev/peps/pep-0585/#implementation Вот тут написано, что эти ABC из collections.abc можно будет параметризовать, а соответствующие импорты из typing депрекейчены.
специальный синтаксис?
асинк, любые выражения в декораторах, юнион через |
вот тут частично не согласен. union через | это не изменения грамматики как уже сказали и движение в эту сторону началось еще с встроенных типов реализующих __class__getitem__
+1
было бы просто удобно иметь TypeVar там, где объявлена функция. (но не всегда, опять же) def get_item<T>(from_: list[T], at: int) -> T: …
мне кажется лучше сделать [], а не <>
м... Python станет похож на Rust ня. под еще большее охуевание всех вокруг, что это не настоящая типизация
для консистентности
в го, кажется, так же сделано (или ещё не сделано? ну тогда собирались сделать)
def filter[Lifetime[a], T](predicate: Callable[[Borrow[T]], bool], iterable: Iterable[a * T]) -> Iterator[a * T]: ...
borrow checker в питоне 😳
PEP 677 кстати не приняли ещё?
Скорее всего такого никогда не будет. Хотя бы из-за того, что Foo[Bar, Baz] — это Foo[(Bar, Baz)]
Ну, может в четвёртом питоне сделают [] равным (), с kw параметрами и *, **. Был же пеп про это
ухх... нужно больше изменений синтаксиса. жесть конечно. нет, оно выглядит неплохо, должен признать, но из-за тайпинга уже перехреначили половину языка.
отлично, теперь у нас 3 способа задать тип функции
4 способа форматирования строк и 3 способа смерджить словари
теперь сделать функцию, которая принмает коллбек и передаёт туда смёрженные словари и строку, можно 36 способами
1. Callable[[str, object], None] 2. class AttributeCallback(Protocol): def __call__(self, attr: str, value: object) -> None: ... 3. (attr: str, value: object) -> None
а что, неплохая идея
заодно можно от GIL и GC избавиться
Обсуждают сегодня