考虑以下字符串构建语句:
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()
。 - Adam Matan