f-строки доступны из Python 3.6 и очень полезны для форматирования строк:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Подробнее о них читайте в f-Strings в Python 3: улучшенный синтаксис форматирования строк (Руководство) . Я нашел интересную картину:
Обратите внимание, что использование тройных скобок приведет к тому, что в вашей строке будут только одиночные скобки:
>>> f"{{{74}}}" '{74}'
Тем не менее, вы можете получить больше скобок, чтобы показать, если вы используете больше, чем тройные скобки:
>>> f"{{{{74}}}}" '{{74}}'
И это именно так:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Теперь, если мы перейдем от двух {
к трем, результат будет таким же:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
Так что нам нужно до 4! ( {{{{
) чтобы получить две скобки в качестве вывода:
>>> f'{{{{74}}}}'
'{{74}}'
Почему это? Что происходит с двумя фигурными скобками, чтобы Python требовал дополнительного с этого момента?
python
python-3.x
string
formatting
f-string
Федорки "ТАК прекратить вредить"
источник
источник
f"{{2+2}}"
иf"{{{2+2}}}"
, которые есть'{2+2}'
и'{4}'
соответственноf'{2+2}'
возвращает 4,f'{{2+2}}'
возвращает 2 + 2,f'{{{2+2}}}'
➝ {4},f'{{{{2+2}}}}'
➝ {{2 + 2}} и так далее. Это имеет смысл, но с первого взгляда немного озадачивает.f'{74}'
, что так же, какf'74'
.str.format
тоже делает это."{74}".format(...)
потребуется последовательность, по крайней мере, с 74 элементами.Ответы:
Двойные скобки избегают скобок, так что интерполяция не происходит:
{{
➝{
и}}
➝}
. И74
остается неизменной строка'74'
.С тройными скобками наружные двойные скобки экранируются, как и выше. Внутренние скобки, с другой стороны, приводят к обычной интерполяции строки значения
74
.То есть строка
f'{{{74}}}'
эквивалентнаf'{{ {74} }}'
, но без пробелов (или, что то же самое,'{' + f'{74}' + '}'
).Вы можете увидеть разницу при замене числовой константы на переменную:
источник