Что лучше между определением переменной рядом с ее контекстом или избегать повторного выделения/инициализации?

#loops #for-loop #code-cleanup

Вопрос:

Мои примеры из Python, но я думаю, что эта концепция применима к большинству языков. Предположим, у меня есть следующий сценарий

 for element in big_list:  temp_var=something # This remains constant throughout the iterations  # Looping clause   

Здесь- temp_var постоянная переменная, необходимая в цикле. Но если он остается постоянным, должен ли я определить его непосредственно перед запуском for цикла? Два противоречащих друг другу принципа здесь таковы

  1. Переменные должны быть определены с наименьшей возможной областью действия, чтобы не заполнять пространство имен. Это аргумент для выполнения описанных выше действий, который также приближает переменную к контексту использования.
  2. Но определение внутри цикла требует повторной инициализации и распределения на каждой итерации. Или это что-то, что компилятор/интерпретатор оптимизирует, чтобы я все равно мог закрыть на это глаза?

Ответ №1:

Поскольку переменная не изменится внутри цикла, я определенно решу определить ее перед циклом. Кроме того, причина 1 непригодна для использования, если переменная не будет выделена до выхода из цикла, я имею в виду, что она останется живой после цикла. После выхода из цикла вы можете отменить настройку переменной. Итак, мой подход будет таким:

 temp_var = something # This remains constant throughout the iterations for element in big_list:  # Looping clause # loop ended del temp_var # If it's not needed anymore  

Мне жаль, что я не управляю python, но я думаю, что этот «код» легко понятен и применим практически к любому языку.