• Как лучше делать return?

    @bbkmzzzz
    В данном конкретном случае - лучше второй вариант
    def test(a):
        if a == "abc":
            result = True
        elif a == "123":
            result = False
        # если a !=  "abc" и a != "123" будет выброшено исключение, UnboundLocalError, так как result не определен
        return result

    def test(a):
        if a == "abc":
            return True
        elif a == "123":
            return False
        # если a !=  "abc" и a != "123" будет возвращено None, как значение при отсутствии или пустом return

    Если функция сложная, return - один, значение по умолчанию инициализировано в начале функции, если что-то простое и наглядное, можно и несколько сделать, на мой взгляд
    Ответ написан
    Комментировать
  • Как лучше делать return?

    @kamenyuga
    В данном случае никакой разницы. В обоих вариантах код простой, короткий и понятный. Второй покороче, я бы его использовал.

    На практике часто смешиваются эти два варианта. Сначала обрабатываешь простые граничные случаи, в них сразу пишешь return True/False/1/0. А потом заводишь нужные переменные, обрабатываешь общий случай с разными ответвлениями и вычислениями, в конце которого уже идет return answer.
    Ответ написан
    Комментировать
  • Как лучше делать return?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Ну во-первых - у вас немного разная логика функций.
    Первая процедура вылетит с ошибкой если передать значение не равное 123 или abc.
    result-то вы не проинициализировали...
    Вторая - отработает успешно, просто ничего не вернет.
    Если они будут задействованы в критической логике программы, - то у вас программа просто в ошибку свалится в первом случае. Во втором случае - не свалится, если возврат значения None предусмотрено дальнейшей программой (только не спутать ее с False)

    Во вторых - первая функция компилируется в байткод из 28 команд, а вторая - в 26. Лишнее присваивание дает лишние шаги программы. В одном месте - как минимум - 2 лишних бесполезных байт-кода, в другом, в третьем... И потом этот ничего не делающий байт-код просто греет процессор, внося свою толику в дело глобального потепления и ухудшения экологии на планете в целом... Так что лишний раз подумайте - есть ли особая в этом необходимость...

    Ну и в третьих - эти процедуры можно заменить более эффективными. Впрочем, - коллеги уже подсказали какими.
    Ответ написан
    Комментировать
  • Как лучше делать return?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В конкретном примере больше ничего не нужно
    def test(a):
        return a == "abc"


    В общем случае предпочитаю один return, так прямее на мой взгляд.
    Ответ написан
    Комментировать