f-String插值不仅仅在运行时

时间:2017-07-04 11:43:36

标签: python

是否有办法使字符串的内容始终依赖于环境变量(而不仅仅是在运行定义字符串的行时进行插值)?

我可能不清楚,所以这里是我想要的一个例子

my_variable = "foo"
my_string = f"The variable is {my_variable}"
print(my_string)

# Output :
  

答案是foo

my_variable = "bar"
# Note I'm not doing "my_string = ..." again
print(my_string)

# The desired output :
  

变量是bar

# The actual output :
  

变量是foo

1 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

my_variable="foo"
my_string = "a string containing {somevar}".format(somevar=my_variable)
print(my_string)
my_variable="bar"
my_string = "a string containing {somevar}".format(somevar=my_variable)
print(my_string)

返回:

a string containing foo
a string containing bar

[编辑]啊,我看,你想删除my_string的第二次显式重新评估并打印出结果,好像它已被评估过一样?

你可以假装不要通过将my_string定义为函数并为其提供my_variable参数来重新评估字符串。它会看起来像你想要的那样,但会在后台做同样的事情。

def my_string(somevar):
    return "a string containing {somevar}".format(somevar=somevar)

my_variable="foo"
print(my_string(my_variable))
my_variable="bar"
#my_string = "a string containing {somevar}".format(somevar=my_variable)
print(my_string(my_variable))

返回:

a string containing foo
a string containing bar