consideri la seguente dichiarazione edificio stringa:Python: La formattazione di una stringa utilizzando nomi di variabili segnaposto
s="svn cp %s/%s/ %s/%s/" % (root_dir, trunk, root_dir, tag)
utilizzando quattro %s
può essere fonte di confusione, quindi io preferisco usare i nomi delle variabili:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**SOME_DICTIONARY)
Quando root_dir
, tag
e trunk
sono definiti nell'ambito di una classe, utilizzando self.__dict__
funziona bene:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**self.__dict__)
Ma quando le variabili sono locali, non vengono definiti in un dizionario, per cui uso concatenazione di stringhe, invece:
s="svn cp "+root_dir+"/"+trunk+"/ "+root_dir+"/"+tag+"/"
trovo questo metodo piuttosto confusa , ma non conosco alcun modo per costruire una stringa usando le variabili locali in-line.
Come posso costruire la stringa utilizzando nomi di variabili quando le variabili sono locali?
Aggiornamento: l'uso della funzione locals()
ha funzionato.
Si noti che è consentita la combinazione di variabili locali e oggetto! per esempio,
s="svn cp {self.root_dir}/{trunk}/ {self.root_dir}/{tag}/".format(**locals())
Grazie, completamente dimenticato 'locals()'. –
nota che '{a}'. Format (** locals()), '{a}'. Format (a = a) e '{0}'. Format (a) sono cronometrati a 450ns, 410 e 215 rispettosi . (ok è ns ...) – comte