News for hackers. Stuff that matters.
Re:Can (a ==1 && a== 2 && a==3) ever evaluate to true? by weberc2 on Tuesday January 16, 2018 @02:57PM (#16161729)
It doesn't have to even be "underhanded". Libraries like SQLAlchemy overload `==` to return a piece of a query predicate (e.g., `foo == 0` => `WHERE foo = 0`), similarly, if I recall correctly, there's an overloaded `and` operator, which performs a similar function. Because Python is truthy and these operators return objects, I think this may evaluate to `True` without being deliberately underhanded. Granted, building a query predicate `WHERE a = 1 AND a = 2 AND a = 3` isn't a useful thing to do in the first place, but still not underhanded.
Re:Can (a ==1 && a== 2 && a==3) ever evaluate to true? by greenshackle3 on Tuesday January 16, 2018 @03:14PM (#16161954)
Nitpick, SQLAlchemy overrides the binary operators (~, &, |) for query construction, not the logical operators (and, or, not). It also has its own operators you can import (and_, or_, etc.)

And you are right, it can easily lead to mistakes; if you use logical operators by mistake when building a query, you will probably get 'True' instead of a query object.

Re:Can (a ==1 && a== 2 && a==3) ever evaluate to true? by weberc2 on Tuesday January 16, 2018 @05:24PM (#16163298)
I appreciate your nitpick! It's been a little while since I used SQLAlchemy, and I did run into surprises with these overloaded operators.
Re:Can (a ==1 && a== 2 && a==3) ever evaluate to true? by alanfranzoni on Tuesday January 16, 2018 @03:08PM (#16161875)
Python supports operator overloading, js doesn't. Expectations are different.