Hi Oleg, others,
It's not that it can't be done, just that it does something you don't expect. I've been professionally working with C++ for nine years in large-scale Windows systems, and I do expect a boolean expression return a boolean value.

Or, can you show me an example how the developer would benefit of the current behavior? Any operator traditionally considered as boolean will do.


On Thu, Jan 17, 2013 at 2:51 PM, Oleg Broytman <phd@phdru.name> wrote:
On Thu, Jan 17, 2013 at 02:44:03PM +0200, Ilkka Pelkonen <ica@iki.fi> wrote:
> expected_result = (expected_string != 'TRUE') # Boolean
> element = find_element() # Can return None or an instance of Element
> flag = (element and element.is_visible())
> if flag == expected_result:
> ..# Ok
> ..return
> # Otherwise perform some failure related stuff.
> This code does not work. What happens on the 'flag' assignment row, is that
> if 'element' is None, the expression returns None, not False. This makes
> the if comparison to fail if expected_result is False, since boolean False
> is not None.

   No need to change the language. Just do

flag = bool(element and element.is_visible())

     Oleg Broytman            http://phdru.name/            phd@phdru.name
           Programmers don't die, they just GOSUB without RETURN.
Python-ideas mailing list