[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
> 


More information about the Tutor mailing list