考虑以下字符串建筑的语句格式的字符串:的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)的格式(** locals()),'{a}'。格式(a = a)和格式(a)分别在450ns,410和215时间。 (确定是ns ...) – comte