Názor k článku Kontejnery v Pythonu: zdaleka nejde jen o n-tice, seznamy, množiny a slovníky od Ravise - > (...) že to nutí ke změně...

  • Článek je starý, nové názory již nelze přidávat.
  • 1. 5. 2024 11:34

    Ravise
    Stříbrný podporovatel

    > (...) že to nutí ke změně typových hintů. Protože pokud tam bude def x(y=None), tak typ toho y už nebude "typ", ale "Optional[typ]".

    Pokud je problém v tom Optional, tak ať funkce bere y: Iterable[T], a seznam (=implementaci) si z parametru může vyrobit v těle? Výchozí hodnotou může být bezpečná* n-tice, a jediná nevýhoda, která mě takhle z fleku napadá, je absence

    _ = x(None)  # explicitly requesting default value

    Navíc si myslím, že ta "změněná" sémantika typu je vlastně správně - buď tam x dám (x: T) nebo ne (x: None). Typ x-u je otázkou rozhraní, ne toho, co se skutečně stane-


    [*]: Samozřejmě záleží na bezpečnosti všech prvků n-tice... ale pokud už člověk musí udělat něco takového, tak si tu nekonzistenci zaslouží.

    >>> first = ("eggs", "ham", ["spam"]*5)
    >>> second = first + ("baked beans",)
    >>> second[2].append("spam")  # even more spam please
    >>> len(first[2])
    6