В основном это личные предпочтения, цели и доступные библиотеки.Лично я думаю, что xml слишком многословен для конфигурационных файлов, но он популярен и имеет отличные библиотеки.
.cfg, .ini - это устаревшие форматы, которые хорошо работают, и многие языки имеют включенную библиотеку, которая их читает.Я использовал его в Java, Python, C ++ без проблем.На самом деле он не работает как формат обмена данными, и если я передаю данные, я, вероятно, буду использовать один и тот же формат для конфигурации и обмена данными.
yaml, а json - между xml и cfg / ini.Вы можете определить много структур данных в обоих, или это может быть простое значение ключа как с cfg.Оба этих формата имеют отличные библиотеки на python, и я предполагаю, что и во многих других языках есть библиотеки.Я считаю, что json - это подмножество yaml.
Я никогда не использовал файл python в качестве конфигурации, но, похоже, он хорошо работает для django.Это позволяет вам иметь некоторый код в конфигурации, который может быть полезен.
В прошлый раз, когда я выбирал формат, я выбрал yaml.Это просто, но имеет некоторые приятные функции, а библиотека python была проста в установке и действительно хороша.Json был близким вторым, и поскольку библиотека yaml проанализировала json, я выбрал yaml.