a = True
print(('A','B')[a == False])
Could you please explain me in detail, preferably line-by-line what will be the output?
a = True
print(('A','B')[a == False])
Could you please explain me in detail, preferably line-by-line what will be the output?
a
is set to True
, and Python's bool
is a subclass of the int
type, so a
can be interpreted as 1
.
(Omitting the print
statement because that shouldn't need explaining), a tuple ("A", "B")
whose indices are 0
and 1
respectively, is indexed at the result of the boolean expression a == False
. The result of the expression is False
since a
is True
, so a == False
is False
and therefore is interpreted as 0
, so the tuple is indexed at index 0
, which prints "A"
.
this code is confusing in part because it relies on dynamic type conversion. This is not particularly well written code.
a = True
idx = (a == False) # False
("A", "B")[idx] # idx gets converted to int(False) -> 0
("A", "B")[0] # -> "A"
The tricky part is that False
when cast as an int
type is equal to 0
, which is then used as an index for the tuple ("A", "B"). This is bad practice and generally confusing.