# [Tutor] am I missing another simpler structure?

Kent Johnson kent37 at tds.net
Thu Dec 16 13:57:12 CET 2004

```It's probably worth pointing out that these two functions are not entirely equivalent:
def t1():
if condition:
return True
return False

def t2():
return condition

because 'condition' does not have to evaluate to a boolean value, it can be any Python value.

Here is a simple example where 'condition' is just the value of a parameter:
>>> def t1(a):
...   if a:
...     return True
...   return False
...
>>> def t2(a):
...   return a
...

If a is actually True or False these two functions return the same value:
>>> a=True; print t1(a), t2(a)
True True
>>> a=False; print t1(a), t2(a)
False False

For other values of a they return different values; t1 will always return True or False, while t2,
obviously, returns a:
>>> a=1; print t1(a), t2(a)
True 1
>>> a=None; print t1(a), t2(a)
False None
>>> a=[]; print t1(a), t2(a)
False []

Usually this is fine; code such as
if t1(a): print 'a is True'

will work the same with t1 or t2. OTOH, if you explicitly test the return value (which is *not*
recommended practice), you will get different results:
>>> if t1(100) == True: print '100 is True'
...
100 is True

>>> if t2(100) == True: print '100 is True'
...
(nothing prints)

I recommend *not* testing explicitly for True, and I recommend the t2() form. Then Python will do
what you expect. But I thought it was worth pointing out the difference.

Kent

Gregor Lingl wrote:
>
>
> Brian van den Broek schrieb:
>
>> If my original bit of code, the structure was like:
>>
>> output_value = False
>> if condition:
>>     output_value = True
>> return output_value
>>
>> Mine would be like yours if transformed to:
>>
>> if condition:
>>     return True
>> return False
>>
>
> Hi Brian!
> Do you mean, that condition is something which is
> True od False?
> And if condition is True you want to return True?
> And if condition is False you want to return False?
>
> So why not simlpy:
>
> return condition
>
> ?
>
> Regards,
> Gregor
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
```