(0, 1)
является 2-элементным tuple. Вы можете получить доступ к его значения с помощью index accessors[0]
и [1]
вроде этого:
>>> (0, 1)[0]
0
>>> (0, 1)[1]
1
Теперь в Python, булевы значения True
и False
фактически экземпляры int
(потому что bool
является подтипом int
):
>>> issubclass(bool, int)
True
>>> isinstance(True, int)
True
>>> isinstance(False, int)
True
ИНТ значения True
и False
являются 1
и 0
:
>>> True == 1
True
>>> False == 0
True
Таким образом, вы можете использовать их два доступ к элементам в вашем 2-элементе кортеже:
>>> (0, 1)[False]
0
>>> (0, 1)[True]
1
И это объясняет, почему указания условия там, который возвращает логическое значение, будет работать так же хорошо.
Это также упоминается в documentation (курсив):
логические значения являются двумя постоянными объектами False
и True
. Они используются для представления значений истинности (хотя другие значения также могут считаться ложными или истинными). В числовых контекстах (например, при использовании в качестве аргумента для арифметического оператора) они ведут себя как целые числа 0 и 1 соответственно.
Это будет написано любым разумным как 's = 1, если <10 еще 0'! Связано: http://stackoverflow.com/a/470376/3001761 – jonrsharpe