Python "and" behavior

MRAB python at mrabarnett.plus.com
Fri Aug 14 03:09:09 CEST 2009


Gary Herron wrote:
> goldtech wrote:
>> Could you explain or link me to an explanation of this? Been using
>> Python for a while but not sure I understand what's happening below.
>> Thanks.
>>
>>
>>   
>>>>> ss=1 and "fffff"
>>>>> ss
>>>>>         
>> 'fffff'
>>   
>>>>> ss=0 and "fffff"
>>>>> ss
>>>>>         
>> 0
>>   
> 
> Python's Boolean operators don't turn arbitrary values into True and 
> False values.  If you use it in any conditional, you'll get the same 
> result as if it did, but it is occasionally it's nice to get the actual 
> values used in the "and" instead of having the value distilled down to a 
> True/False.
> 
> 
>  >From the Python manual: 
> 
> These are the Boolean operations, ordered by ascending priority:
> 
> Operation 	Result 	Notes
> |x or y| 	if x is false, then y, else x 	(1)
> |x and y| 	if x is false, then x, else y 	(1)
> |not x| 	if x is false, then |True|, else |False| 	(2)
> 
The Pythonic table would be:

Operation 	Result
|x or y| 	x if x else y
|x and y| 	y if x else x
|not x| 	False if x else False

:-)



More information about the Python-list mailing list