【发布时间】:2017-05-09 11:35:41
【问题描述】:
在最近的 Python 3.6 版本中使用新的 f 字符串时,我注意到以下几点:
-
我们创建一个
foo变量,其值为bar:>>> foo = 'bar' -
然后,我们声明一个新变量,也就是我们的 f-string,它应该用
foo来格式化:>>> baz = f'Hanging on in {foo}' -
好的,一切正常,然后我们调用
baz来检查它的值:>>> baz 'Hanging on in bar' -
让我们尝试更改
foo的值并再次调用baz:>>> foo = 'spam' >>> baz 'Hanging on in bar'
不应该是动态的吗?为什么会这样?我认为如果foo 的值发生变化,f-string 会更新,但这并没有发生。我不明白这是怎么回事。
【问题讨论】:
-
您希望表达式
'Hanging on in ' + foo表现如何? -
或
'hanging on in {}'.format(foo)- 他们不保留对插值的引用。 -
据我了解,这些花哨的“f-strings”只是
str.format的某种语法糖。 -
@JoshLee 一个更好的问题是他们期望
foo = f'{foo}'的行为方式。
标签: python python-3.x python-3.6 f-string