A blog post on choosing more specific types rather than general ones like list and dict.

  • jadelord@discuss.tchncs.de
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Good point, and Łukasz Langa mentioned this in his talk (check it out). He names it the robustness principle, in his words (around 22:20 mark:

    “Vague in what you accept, concrete in what you return”

    But he also mentions some gotchas like how Iterable[str] can backfire, because str is also an Iterable[str] and it might be better to use list[str].

  • chemacortes@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    Sequence now lives at collections.abc. BTW, float is not a supertype of int (issubclass(int, float) == False). Normaly, It is acceptable to use int instead of float, but speaking of variance, it is more precise to use numbers.Real:

    issubclass(Integral, Real) == True
    issubclass(int, Real) == True
    issubclass(float, Real) == True
    issubclass(complex, Real) == False