То, как Python интерпретирует следующий синтаксис, не имеет смысла для меня (и я потерял два часа на отладку кода из-за этого!):
Допустим, у вас есть следующий код:
def returns_true():
print('i\'ve been called!')
return True
for val in [True, False]:
print('val =', val)
print(val or returns_true())
получая следующий вывод
val = True
True
val = False
i've been called!
True
Может кто-нибудь объяснить, почему returns_true()
вызывается только тогда, когда val
равен False
?Разве Python не должен вызывать функцию, чтобы оценить ее возвращаемое значение с помощью оператора or
?