Рассмотрим следующую строку здания заявление:Python: Форматирование строки с использованием имен переменных заполнителей
s="svn cp %s/%s/ %s/%s/" % (root_dir, trunk, root_dir, tag)
Использование четыре %s
может сбивать с толку, поэтому я предпочитаю использовать имена переменных:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**SOME_DICTIONARY)
Когда root_dir
, tag
и trunk
определены в пределах класса, используя self.__dict__
хорошо работает:
s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**self.__dict__)
Но когда переменные являются локальными, они не определены в словаре, поэтому я использую конкатенацию вместо:
s="svn cp "+root_dir+"/"+trunk+"/ "+root_dir+"/"+tag+"/"
Я считаю этот метод довольно запутанным , но я не знаю, как построить строку, используя локальные локальные переменные.
Как я могу построить строку с именами переменных, когда переменные являются локальными?
Обновление: Использование функции locals()
сделало трюк.
Обратите внимание, что смешивание локальных и объектных переменных разрешено! например,
s="svn cp {self.root_dir}/{trunk}/ {self.root_dir}/{tag}/".format(**locals())
Спасибо, полностью забыл 'locals()'. –
Обратите внимание, что '{a}'. Format (** locals()), '{a}'. Format (a = a) и '{0}'. Формат (a) синхронизирован с частотой 450 нс, 410 и 215 , (нормально, это ns ...) – comte