У меня проблемы с логикой ниже.Я узнал о модуле unittest и наткнулся на этот код.
def matches(self, date):
return ((self.year and self.year == date.year or True) and
(self.month and self.month == date.month or True) and
(self.day and self.day == date.day or True) and
(self.weekday and self.weekday == date.weekday() or True))
Который, на мой взгляд, всегда будет True.При обсуждении того, почему код не работает, обсуждалась эта разница:
>>> c=1
>>> c and c == 2 or True
True
>>> c and c == (2 or True)
False
Какова логика для "c и c == 2 или True" против "c и c == (2или True) "
Я знаю, что" == "связывает сильнее, чем или, но я не понимаю, что пытается сделать вся конструкция.Он используется для включения подстановочного знака.Как часть, я думаю, что мне нужно объяснение того, как и как работает с числами (я всегда думал об этом в отношении условий True / False.
В чем смысл части "c и c" любого выражения?
Спасибо,
Нарни