TGViewer
Channel Public Channel
CPython notes

CPython notes

@cpython_notes

Author: Kirill Podoprigora aka @backinblacknext
Subscribers
2.39K
Photos
11
Videos
0
Links
95

Showing posts older than #14 · Back to latest

Older Posts 9 shown
Post #11 2.37K
Post #10 2.44K
Post #9 2.61K
Post #7 2.66K
Post #6 2.66K
К сообщению выше, стоит сказать что type теперь у нас soft-keyword.
Все это пришло вместе с pep-695.
Если смотреть с точки зрения лаконичности, этот пеп имеет смысл.
В основном, теперь просто не надо создавать тайпвары.
Окей, но не стоит забывать что у тайпваров можно было указать ко/контравариантность. А что с вариантностью в новом синтаксисе? Кстати, вот он -
class Foo[T: int]:
def method(self, arg: T) -> T:
return arg

тоже и для функций
def foo[T: int](arg: T) -> T:
return arg

И к сожалению (как минимум, моему) фичи вида +T -T ~T не доступны. То есть, в таком виде не укажешь вариантность типа.
В итоге, мы имеем <Автовариантность>. На чьи плечи она ложится? На плечи тайпчекеров.
Почему так сделали? Потому что тему вариантности посчитали достаточно сложной и запутанной.
Выводы делайте сами.

По перфомансу с точки зрения создания класса/функции с таким синтаксисом (именно создания класса/функции, а не создания инстанса/вызова функции).
Перфоманс в этом плане, конечно, упал. Байткод у классов/функций которые написаны в "новом стиле" чуть ли не в 2 раза длиннее. Но, так как создание класса/функции у нас происходит один раз, не то что бы это как-то влияло на общую картину(я думаю, что в кодогенерации, результат которой исполняется на лету, никто не использует тайпхинты)
А type как soft-keyword просто замена TypeAlias. Не считаю это тем изменением которое было необходимо.
  • 👍 3
Post #5 2.39K
3.12 valid syntax
type Alias[T: ([T for T in (T, [1])[1]], T)] = [T for T in T.__name__]
  • 🤯 9
  • 🔥 1
Post #1
Channel created
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →