【发布时间】:2019-04-26 05:17:59
【问题描述】:
如here 所述,f 字符串在与字典一起使用时表现不佳。
这是一个不太好的行为示例:
d = {'foo': 'bar'}
# Both work as expected
d["foo"]
d['foo']
# This only works when different quotations are used in the inner and outer strings
f'{d["foo"]}'
f"{d['foo']}"
# This doesn't work
f'{d['foo']}'
f"{d["foo"]}"
# The .format() method doesn't care
'{}'.format(d['foo'])
列出的最后两个 f 字符串导致 SyntaxError: invalid syntax,这是因为字符串 '{d['foo']}' 被评估为 '{d['foo']}'。
在使用旧的.format() 方法时,f-strings 大括号内的所有内容都没有被单独评估的根本原因是什么?以这种方式实现 f-strings 的可能原因是什么?
我喜欢 f 弦,但这似乎支持旧方法。
【问题讨论】:
-
如果
'不是指',你将如何标记字符串的结尾? -
支持
format的另一点是您可以省略围绕索引键的字符串分隔符,例如'{}'.format(d[foo]),除非它们包含一个数字(或者是一个),这很奇怪。
标签: python string python-3.x syntax-error