• Jerkface (any/all)
    link
    fedilink
    English
    5
    edit-2
    4 days ago

    Truthiness is so fundamental, in most languages, all values have a truthiness, whether they are bool or not. Even in C, int x = value(); if (!x) x_is_not_zero(); is valid and idiomatic.

    I appreciate the point that calling a method gives more context cues and potentially aids readability, but in this case I feel like not is the python idiom people expect and reads just fine.

    • @iAvicenna@lemmy.world
      link
      fedilink
      English
      24 days ago

      I don’t know, it throws me off but perhaps because I always use len in this context. Is there any generally applicable practical reason why one would prefer “not” over len? Is it just compactness and being pythonic?

      • Jerkface (any/all)
        link
        fedilink
        English
        1
        edit-2
        4 days ago

        It’s very convenient not to have to remember a bunch of different means/methods for performing the same conceptual operation. You might call len(x) == 0 on a list, but next time it’s a dict. Time after that it’s a complex number. The next time it’s an instance. not works in all cases.

        • @sugar_in_your_tea@sh.itjust.works
          link
          fedilink
          English
          13 days ago

          dict

          len also works on a dict.

          The point stands. If you want to check if a value is “empty,” use the check for whether it’s “empty.” In Python, that’s not. If you care about different types of empty (e.g. None vs [] vs {}), then make those checks explicit. That reads a lot better than doing an explicit check where the more common “empty” check would be correct, and it also make it a lot more obvious when you’re doing something special.

        • @iAvicenna@lemmy.world
          link
          fedilink
          English
          24 days ago

          I feel like that only serves the purpose up to the point that methods are not over reaching otherwise then it turns into remembering what a method does for a bunch of unrelated objects.