[Tutor] am I missing another simpler structure?
orion_val at 163.com
Thu Dec 16 14:42:06 CET 2004
Python's 'and' and 'or' operation only returns the right value (any kind
of value: integer, string, list, excuting a function and so on) not
Boolean value (True or False). It's a real fuzzy tip for beginners.
See Chapter 4.6 of Dive into Python for futher reading
Kent Johnson wrote:
> 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
> >>> 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.
> 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
> Tutor maillist - Tutor at python.org
More information about the Tutor