问题:为什么带有f字符串的f'{{{74}}}’与f'{{74}}’相同?
f字符串可从Python 3.6中获得,对于格式化字符串非常有用:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
在Python 3的f字符串中阅读有关它们的更多信息:改进的字符串格式语法(指南)。我发现了一个有趣的模式:
请注意,使用三重花括号将导致字符串中只有一个大括号:
>>> f"{{{74}}}" '{74}'
但是,如果使用的括号多于三个,则可以显示更多的括号:
>>> f"{{{{74}}}}" '{{74}}'
确实是这样:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
现在,如果我们从两个传递{
到三个,结果将是相同的:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
因此,我们最多需要4个!({{{{
)获得两个大括号作为输出:
>>> f'{{{{74}}}}'
'{{74}}'
为什么是这样?从那时起,用两个花括号使Python需要一个额外的花括号会发生什么?
回答 0
双括号逃脱牙套,所以没有发生插值:{{
➝ {
和}}
➝ }
。并74
保持不变的字符串,'74'
。
与三括号相同,外部的双括号被转义。另一方面,内部括号导致值的常规字符串插值74
。
也就是说,该字符串f'{{{74}}}'
等效于f'{{ {74} }}'
,但没有空格(或等效于'{' + f'{74}' + '}'
)。
在用变量替换数字常量时,您可以看到区别:
In [1]: x = 74
In [2]: f'{{x}}'
Out[2]: '{x}'
In [3]: f'{{{x}}}'
Out[3]: '{74}'