[Tutor] am I missing another simpler structure?
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:
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)
>>> a=False; print t1(a), t2(a)
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)
>>> a=None; print t1(a), t2(a)
>>> a=; print t1(a), t2(a)
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'
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.
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
> Tutor maillist - Tutor at python.org
More information about the Tutor