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?
python
python-3.x
string
formatting
f-string
fedorqui 'Então pare de prejudicar'
fonte
fonte
f"{{2+2}}"
ef"{{{2+2}}}"
, que são'{2+2}'
e'{4}'
respectivamentef'{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 quef'74'
.str.format
faz isso também."{74}".format(...)
exigiria uma sequência com pelo menos 74 elementos.Respostas:
Aparelhos duplos escapam dos aparelhos, para que não ocorra interpolação:
{{
➝{
e}}
➝}
. E74
continua sendo uma string inalterada'74'
.Com chaves triplas, as chaves duplas externas são escapadas, o mesmo que acima. Os chavetas internas, por outro lado, levam à interpolação regular do string
74
.Ou seja, a cadeia
f'{{{74}}}'
é equivalente af'{{ {74} }}'
, mas sem espaços (ou, equivalentemente, a'{' + f'{74}' + '}'
).Você pode ver a diferença ao substituir a constante numérica por uma variável:
fonte