Questo è esattamente come è stato fatto in Django.
Un vantaggio rispetto ad es. I file INI sfruttano tutta la potenza e l'espressività della lingua nella configurazione, consentendo di generare impostazioni programmaticamente e trucchi come rendendo la configurazione dipendente da dove è in esecuzione l'applicazione .
Tuttavia, questo potere ha un costo. Ti impedisce di offrire in modo sicuro qualsiasi metodo altro del file di configurazione per modificare le impostazioni (ad esempio tramite una finestra di dialogo "Opzioni"), a meno che:
-
La tua applicazione può decifrare il significato di codice arbitrario (che I think è impossibile , anche se non sono abbastanza un teorico per esserne sicuro), o
-
Hai un metodo alternativo per memorizzare le opzioni di configurazione impostate dall'interno dell'applicazione (e poi devi decidere quale di queste ha la precedenza in caso di conflitto).
Se ti senti a tuo agio nell'offrire un file di configurazione come unico modo di configurare la tua applicazione, ciò suggerisce che consideri i tuoi utenti competenti a modificare un file contenente un semplice elenco di coppie chiave / valore. Ne consegue che non c'è ragione per cui sarebbero meno capaci di gestirlo con, ad es. Assegnazioni Python piuttosto che con file in formato INI e allo stesso tempo puoi offrire agli utenti esperti tecniche di configurazione molto più potenti.