Это вопрос стиля (или предпочтений), так как переводчику все равно. Лично я бы попытался не делать окончательный оператор функции, которая возвращает значение на уровне отступа, отличном от базы функции. Else в примере 1 скрывает, хотя и немного, где находится конец функции.
По желанию я использую:
return A+1 if (A > B) else A-1
Поскольку он подчиняется как хорошему соглашению о наличии единственного оператора возврата в качестве последнего оператора в функции (как уже упоминалось), так и хорошей парадигме функционального программирования, позволяющей избежать промежуточных результатов императивного стиля.
Для более сложных функций я предпочитаю разбивать функцию на несколько подфункций, чтобы избежать преждевременного возврата, если это возможно. В противном случае я возвращаюсь к использованию переменной императивного стиля под названием rval. Я стараюсь не использовать несколько операторов возврата, если функция не является тривиальной или оператор возврата до конца не является результатом ошибки. Преждевременное возвращение подчеркивает тот факт, что вы не можете продолжать. Для сложных функций, которые предназначены для разделения на несколько подфункций, я стараюсь кодировать их как операторы case (например, управляемые dict).
В некоторых плакатах упоминалась скорость работы. Скорость выполнения для меня второстепенна, поскольку, если вам нужна скорость выполнения, Python - не лучший язык для использования. Я использую Python, поскольку он важен для меня как эффективность кодирования (т.е. написание кода без ошибок).