Perché pensi che il risultato deve essere di tipo booleano?
in pitone wiki:
L'espressione x and y valuta prima x; se x è falso, viene restituito il valore ; in caso contrario, y viene valutato e viene restituito il valore risultante.
L'espressione xo y prima valuta x; se x è vero, viene restituito il valore ; in caso contrario, y viene valutato e viene restituito il valore risultante.
Nota che né e né o limitare il valore e il tipo tornano a False e True, ma piuttosto tornare l'ultimo argomento valutato. Ciò è talvolta utile, ad esempio, se s
è una stringa che deve essere sostituita da un valore predefinito se è vuota, l'espressione s or 'foo'
restituisce il valore desiderato. Poiché non è necessario inventare un valore in ogni caso, non si preoccupa di restituire un valore dello stesso tipo del suo argomento, quindi ad esempio, not 'foo'
restituisce False, non ''
.
Questo è chiaramente spiegato in [la documentazione di Python] (https://docs.python.org/release/2.5.2/lib/boolean.html). – kindall