Equivalent code to the bool() built-in function

Chris Rebert clp2 at rebertia.com
Sat Apr 16 22:58:37 CEST 2011


On Sat, Apr 16, 2011 at 1:24 PM, candide <candide at free.invalid> wrote:
> Consider the following code :
>
> # --------------------------------------
> def bool_equivalent(x):
>    return True if x else False
>
>
> # testing ...
>
> def foo(x):
>    return 10*x
>
> class C:
>    pass
>
> for x in [42, ("my","baby"), "baobab", max, foo, C] + [None, 0, "", [],
> {},()]:
>    print bool(x)==bool_equivalent(x)
> # --------------------------------------
>
>
> Is the bool_equivalent() function really equivalent to the bool() built-in
> function ?

The ternary operator, if-statement, and `while` all do the equivalent
of an implicit bool() on their condition, so bool_equivalent() will
always give the same result as bool() because it's indeed using the
moral equivalent of bool() behind the scenes.
That is, `True if x else False` conceptually gets compiled down to
`True if bool(x) == 1 else False` (but without doing a run-time lookup
of "bool").

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list