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 ']}'
.
В чем основная причина, что все в фигурных скобках f-строк не оценивается отдельно, как при использовании старого метода .format()
, и что может быть причиной реализации f-строк втаким образом?
Я люблю f-струны, но это похоже на точку в пользу старого метода.