Когда я начал работать с python, я стал ленивым в отношении "единственного присвоения", и мне нужно напоминать себе об этом. Вы должны стремиться никогда не переназначать или обновлять переменную вне истинных итеративных вычислений в циклах. Наличие всех промежуточных вычислений по-прежнему доступно полезно в отладчике, и это избегает проблем, когда вы перемещаете блок кода, и он молча использует версию переменной, которая не была той, что у нее была изначально. В C/C++ хорошей практикой является сделать почти каждую переменную const при инициализации. Я бы хотел, чтобы это было по умолчанию, а mutable — это ключевое слово.