当前命名空间中的Python字符串格式

当前命名空间中的Python字符串格式,python,Python,我发现自己写了很多这样的东西: s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo", v2=v2, v3=v3, v4=v4, v5=v5) 是否可以使Python的string.format使用当前命名空间中的变量?上述调用可简化为: s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo") 你在想这样的事吗 >>> v1 = "foo" >>> v2,v3,v4,v5 =

我发现自己写了很多这样的东西:

s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo", v2=v2, v3=v3, v4=v4, v5=v5)
是否可以使Python的string.format使用当前命名空间中的变量?上述调用可简化为:

s = "{v1}_{v2}_{v3}_{v4}_{v5}".format(v1="foo")

你在想这样的事吗

>>> 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'
不过,作为记录,我会避免这样做。如果变量是同一类型的东西,那么它们应该在某种结构中组合在一起,从中可以不使用局部变量而获得值。即使它们不是,我想我更喜欢手动将它们合并到一个单独的dict中,然后在以这种方式使用本地语言之前使用它

[Ed:你真是一个伪君子。你一直以这种方式使用string.Template和局部变量来生成用于模拟的参数文件套件。不要假装你没有

我:是的,但我不想鼓励别人养成我的坏习惯

埃德:至少你应该承认你觉得它很有用,如果你要假装比你的程序员更明确的话


我:…]

你想过这样的事情吗

>>> 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'
不过,作为记录,我会避免这样做。如果变量是同一类型的东西,那么它们应该在某种结构中组合在一起,从中可以不使用局部变量而获得值。即使它们不是,我想我更喜欢手动将它们合并到一个单独的dict中,然后在以这种方式使用本地语言之前使用它

[Ed:你真是一个伪君子。你一直以这种方式使用string.Template和局部变量来生成用于模拟的参数文件套件。不要假装你没有

我:是的,但我不想鼓励别人养成我的坏习惯

埃德:至少你应该承认你觉得它很有用,如果你要假装比你的程序员更明确的话

Me:…]

有一种方法可以直接提供这种能力:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
有一种方法可以直接提供这种能力:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

我使用**变量而不是**局部变量来保存击键-我使用**变量而不是**局部变量来保存击键-