• Ziglin (it/they)
    link
    fedilink
    English
    104 months ago

    Why does not without a parameter return True? I’m starting to like the fact that I haven’t touched python in a while.

    • LostXOR
      link
      fedilink
      234 months ago

      I think it’s because not() is equivalent to not(None), and since None is falsy not(None) returns True.

      • @takeda@lemm.ee
        link
        fedilink
        64 months ago

        Are you sure?

        I can’t test it now, but to me it looks like () is an empty tuple. Python behavior is that for logic operations empty set equals to false. Then we apply not to get True. Not having space between not operator and parentheses makes it look like it is a function.

        • LostXOR
          link
          fedilink
          14 months ago

          I’m pretty sure you’re right; that makes more sense.

      • Ziglin (it/they)
        link
        fedilink
        English
        54 months ago

        Why is literally nothing equivalent to None? Is it because None is the default value of an optional parameter? (If so why oh why is it optional)

        • @spooky2092@lemmy.blahaj.zone
          link
          fedilink
          English
          5
          edit-2
          4 months ago

          Because nothing isn’t something, and something is true. It’s base Boolean logic where everything is either true or false. Null/nothing is false.

          It’s a weird way to think about conditionals, but it makes sense when you use them in real examples. In my case, I use them like this when I need to make sure that a variable has a value. So I can do something like

          If(variable){do things with the variable}else{do stuff when the variable doesn’t exist}

          • Ziglin (it/they)
            link
            fedilink
            English
            14 months ago

            I understand that, it makes sense. But why does it not throw an error? The parameter is missing after all.

              • Ziglin (it/they)
                link
                fedilink
                English
                14 months ago

                That makes a lot more sense, thanks I did see in the syntax highlighting that it was a keyword but forgot that none of them took parameters.

            • @spooky2092@lemmy.blahaj.zone
              link
              fedilink
              English
              04 months ago

              No it’s not, “” (a null/empty string) is the parameter. Not every function needs a parameter to be valid, and negation is one of them. Negating nothing is something, so “not()” = “not(null)” = “not(false)” = “true”

        • Pup Biru
          link
          fedilink
          English
          34 months ago
          a  = null
          if not a:
             …
          

          if not a were null then an if that evaluates that would evaluate it as falsy… also if a would evaluate as falsy :/ that’s far weirder behaviour