Я не думаю, что это даже связано с питоном. В общем, у вас будет что-то вроде этого:
- Загрузка настроек из файла
- Используйте и, возможно, изменяйте настройки в памяти.
- Запись настроек в файл.
Обнаружение изменения настроек может привести к изменению 2 (сохранить «измененное» состояние) или 3 (разница с текущими постоянными настройками).
Первое решение имеет небольшие накладные расходы (может быть одно логическое значение), но тем не менее накладные расходы и находится в «активном» состоянии вашей программы (не запуск / выключение). Кроме того, это дополнительная логика, которая может пойти не так (например, случайно сбросив логическое значение в false на копии).
Второе решение имеет большие накладные расходы, потому что вам нужно загрузить файл, разложить все настройки. Это на самом деле значительно замедлит ваш код по сравнению с простой перезаписью.
В конце концов вы выполняете всю эту работу, просто сохраняя одну запись файла при завершении работы, которая обычно не является самой важной частью вашего приложения. Если ничего не изменится, вы просто перепишите тот же файл.
Так что я бы не стал этого делать, если хранение файла не является слишком сложным / медленным или если вы действительно не хотите, чтобы такие вещи, как «время изменения» файла, были изменены, если вы действительно не изменили настройки. Но эти обстоятельства кажутся мне довольно исключительными.