объясни, пожалуйста, почему разные. Мой довод что однострочный if-else это сахар для тернарного оператора. А and-or как раз и есть реализация тернарного оператора в python
тем что and/or оперирует булевой логикой, когда if/else чуть более расширенной? с 0 / None / "" и прочими пустыми значениями всё становится веселей.