I would say it depends heavily on the language. In Python, it's very common that different objects have some kind of Boolean interpretation, so assuming that an object is a bool because it is used in a Boolean context is a bit silly.
Well fair enough but I still like the fact that len makes the aim and the object more transparent on a quick look through the code which is what I am trying to get at. The supporting argument on bools wasn't't very to the point I agree.
That being said is there an application of "not" on other classes which cannot be replaced by some other more transparent operator (I confess I only know the bool and length context)? I would rather have transparently named operators rather than having to remember what "not" does on ten different types. I like duck typing as much as the next person, but when it is so opaque (name-wise) as in the case of "not", I prefer alternatives.
For instance having open or read on different objects which does really read or open some data vs not some object god knows what it does I should memorise each case.
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?
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.
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.
well it does not imply directly per se since you can "not" many things but I feel like my first assumption would be it is used in a bool context
I would say it depends heavily on the language. In Python, it's very common that different objects have some kind of Boolean interpretation, so assuming that an object is a bool because it is used in a Boolean context is a bit silly.
Well fair enough but I still like the fact that len makes the aim and the object more transparent on a quick look through the code which is what I am trying to get at. The supporting argument on bools wasn't't very to the point I agree.
That being said is there an application of "not" on other classes which cannot be replaced by some other more transparent operator (I confess I only know the bool and length context)? I would rather have transparently named operators rather than having to remember what "not" does on ten different types. I like duck typing as much as the next person, but when it is so opaque (name-wise) as in the case of "not", I prefer alternatives.
For instance having open or read on different objects which does really read or open some data vs not some object god knows what it does I should memorise each case.
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?
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.
lenalso 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.Nonevs[]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.