[Tutor] “has a value of True” versus “evaluates true”
crk at godblessthe.us
Wed Nov 12 04:23:11 CET 2014
From: Tutor [mailto:tutor-bounces+crk=godblessthe.us at python.org] On Behalf Of Danny Yoo
Sent: Tuesday, November 11, 2014 5:25 PM
To: Ben Finney; tutor at python.org
Subject: Re: [Tutor] “has a value of True” versus “evaluates true”
On Tue Nov 11 2014 at 3:09:38 PM Ben Finney <ben+python at benfinney.id.au <mailto:ben%2Bpython at benfinney.id.au> > wrote:
"Clayton Kirkwood" <crk at godblessthe.us> writes:
> So, there is a difference between None and False, is that the issue?
Yes. Those two values are different and not equal; but both evaluate
false in a boolean context.
Just to note; not all programming languages do it this way. Python is fairly permissive in what it allows to be "truthy". See: https://plus.google.com/+ShriramKrishnamurthi/posts/4qvvKYC1R8Y for a brief survey of what many other programming languages do.
It can be confusing and bug-prone as heck.
For myself, I usually want as restrictive an approach as possible with respect to what things are considered "truthy". If I'm in a boolean context, I will explicitly make the expression being tested be either True or False, and that's it. That way, I know I won't get into shaky waters. I program in multiple languages: I don't want to spend brain power remembering yet another a truth table about truth.
Thanks, Danny, that’s kind of the thing I learned about this whole issue. Force the issue truth by casting. Don’t know if I’ll always keep it, but that seems prudent. What led to a portion of this whole issue was that I was assuming that equal sign assignment would produce a True/False certainty which could be tested. I vaguely recall this premise in another language, probably C or Perl.
To quote: "Let your statement be: 'Yes, yes', or "no, no': anything beyond these is of evil."
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Tutor