Воспользуетесь ли вы преимуществами этих функций Python, которые могут помочь сделать ваш код более понятным?

Читаемость кода - это не только сокращение кода. Речь идет об уменьшении интеллектуального бремени понимания того, что делает ваш код и как он это делает.

Вот несколько общих практических правил: явное лучше неявного, четкое лучше короткого и не повторяйся (СУХОЙ).

Имея это в виду, вот три (плюс один бонус!) Примера ситуаций, в которых отказ от оператора if может помочь сделать ваш код более читабельным. Они есть:

  1. Проверка на равенство с более чем одним возможным значением
  2. Выбор одного значения из множества возможных значений
  3. Динамический выбор одной функции для выполнения из набора нескольких возможных функций (бонус: с настраиваемыми аргументами)

1. Проверка на равенство с более чем одним значением? Используйте 1_!

Не очень хороший способ:

Лучший способ:

Почему лучше:

  • По мере увеличения количества допустимых значений «не очень хороший» способ растянет ваш оператор if.
  • Хотите изменить допустимые значения? Просто измените список.
  • Назначив список допустимых значений переменной, вы также можете использовать его в другом месте своего кода. Например, это упрощает написание утверждений:

2. Есть много "elifs" для вашего оператора if? Используй словарь!

Не очень хороший способ:

Лучший способ:

Почему лучше:

  • По мере увеличения количества допустимых значений «не очень хороший» способ растянет ваш оператор if.
  • Сделали другое возможное значение? Просто добавь в словарь!
  • Допустимые значения могут быть обнаружены с первого взгляда, а также, возможно, использованы в другом месте с помощью info_dict.keys().

3. Хотите выполнять функцию динамически? Используйте словарь (снова)!

Не очень хороший способ:

Лучший способ:

Почему лучше:

  • По мере увеличения числа возможных функций «не очень хороший» способ растянет ваш оператор if.
  • Сделали еще одну возможную операцию? Просто добавь в словарь!
  • Разрешенные операции могут быть обнаружены с первого взгляда, а также, возможно, использованы где-то еще с помощью ops.keys().

Бонус: динамические функции с настраиваемыми аргументами

А как насчет того, чтобы каждая из возможных функций имела свой собственный набор аргументов?

Решение - распаковка словаря . Во-первых, что на самом деле делает распаковка словаря? В приведенном ниже коде строки 6 и 14 делают то же самое, с той лишь разницей, что строка 14 использует распаковку словаря.

Теперь нам нужно только слегка изменить наш предыдущий пример, чтобы учесть любые настраиваемые аргументы в наших динамических функциях:

Этот подход может быть полезен в ситуациях, когда вы хотите, чтобы ваша программа была легко настраиваемой. Например, мы можем видеть, что в приведенном выше коде последовательность операций, указанная в функции example_usage(), могла быть вместо этого определена в файле конфигурации, таком как JSON или YAML.

Если вы в настоящее время работаете над проектом машинного обучения, возможно, вы захотите прочитать о моих стратегиях конфигурации в другой моей статье !:



Спасибо за прочтение! Когда дело доходит до читабельности кода, должны быть только рекомендации, а не жесткие правила. Доверьтесь своему чутью или спросите другого разработчика, насколько легко понять ваш код.

Что вы думаете об этих альтернативах операторам if? Оставляйте свои комментарии ниже!