我发现自己写了很多这样的东西:
s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo", v2=v2, v3=v3, v4=v4, v5=v5)
Run Code Online (Sandbox Code Playgroud)
是否有可能使Python string.format使用当前命名空间中的变量?以上调用可以简化为:
s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo")
Run Code Online (Sandbox Code Playgroud)
DSM*_*DSM 13
你在想这样的事吗?
>>> v1 = "foo"
>>> v2,v3,v4,v5 = 1,2,3,4
>>> s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo", v2=v2, v3=v3, v4=v4, v5=v5)
>>> s
'foo_1_2_3_4'
>>> s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(**locals())
>>> s
'foo_1_2_3_4'
Run Code Online (Sandbox Code Playgroud)
但是,为了记录,我会避免这样做.如果变量是相同类型的东西,那么它们应该在一些结构中在一起,从中可以在不使用的情况下获得值locals().即使它们不是,我想我更愿意手动将它们组合成一个单独的字典,然后在使用locals()这种方式之前使用它.
[ 艾德:你真是个伪君子.您可以使用string.Template和locals()这样所有的时间来生成仿真参数文件的套房.不要假装你没有.
我:是的,但我不想鼓励别人养成我的坏习惯.
艾德:至少你应该承认你觉得它很有用,如果你要伪装成一个比你更明确的编码员.
我: ...]