O f-Strings está disponível no Python 3.6 e é muito útil para formatar strings:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Leia mais sobre eles nas f-Strings do Python 3: uma sintaxe aprimorada de formatação de strings (Guia) . Encontrei um padrão interessante:
Observe que o uso de chaves triplas resultará na existência de apenas chaves simples na sua string:
>>> f"{{{74}}}" '{74}'
No entanto, você pode obter mais chaves para mostrar se usar mais do que chaves triplas:
>>> f"{{{{74}}}}" '{{74}}'
E este é exatamente o caso:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Agora, se passarmos de dois {
para três, o resultado será o mesmo:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
Então, precisamos de até 4! ( {{{{
) para obter duas chaves como saída:
>>> f'{{{{74}}}}'
'{{74}}'
Por que é isso? O que acontece com dois aparelhos para que o Python exija um extra a partir desse momento?
f'{2+2}'
retorna 4, f'{{2+2}}'
retorna 2 + 2, f'{{{2+2}}}'
➝ {4}, f'{{{{2+2}}}}'
➝ {{2 + 2}} e assim por diante. Faz sentido, mas se confunde um pouco à primeira vista.
f'{74}'
é o mesmo que f'74'
.
str.format
faz isso também.
"{74}".format(...)
exigiria uma sequência com pelo menos 74 elementos.
f"{{2+2}}"
ef"{{{2+2}}}"
, que são'{2+2}'
e'{4}'
respectivamente