Rozważmy następujące oświadczenie budowę ciąg:Python: Formatowanie ciąg przy użyciu nazw zmiennych zastępczych
s="svn cp %s/%s/ %s/%s/" % (root_dir, trunk, root_dir, tag)
pomocą czterech %s
może być mylące, więc wolą używać nazw zmiennych:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**SOME_DICTIONARY)
Gdy root_dir
, tag
i są zdefiniowane w ramach klasy, przy użyciu self.__dict__
działa dobrze:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**self.__dict__)
Ale gdy zmienne są lokalne, nie są one zdefiniowane w słowniku, więc używam ciąg konkatenacji Zamiast:
s="svn cp "+root_dir+"/"+trunk+"/ "+root_dir+"/"+tag+"/"
Uważam to metoda dość kłopotliwe , ale nie wiem, w jaki sposób skonstruować ciąg znaków za pomocą zmiennych lokalnych w linii.
Jak skonstruować ciąg znaków przy użyciu nazw zmiennych, gdy zmienne są lokalne?
Aktualizacja: Użycie funkcji locals()
rozwiązało problem.
Pamiętaj, że mieszanie zmiennych lokalnych i obiektowych jest dozwolone! np
s="svn cp {self.root_dir}/{trunk}/ {self.root_dir}/{tag}/".format(**locals())
Dzięki, zupełnie zapomniałem 'locals()'. –
Zwróć uwagę, że format "{a}" (** locals()), "{a}" format (a = a) i "{0}" format (a) są ustawione na 450ns, 410 i 215 odpowiednio . (ok to jest ns ...) – comte