嵌套的f弦

发布于 2021-01-29 19:15:49

感谢David
Beazley的推文
,最近我发现新的Python
3.6 f字符串
也可以嵌套:

>>> price = 478.23
>>> f"{f'${price:0.2f}':*>20s}"
'*************$478.23'

要么:

>>> x = 42
>>> f'''-{f"""*{f"+{f'.{x}.'}+"}*"""}-'''
'-*+.42.+*-'

让我感到惊讶的是,这种可能性是可行的,但是我却不知道这种实用性如何,何时嵌套f字符串有用?这可以涵盖哪些用例?

注意:PEP本身没有提到嵌套f字符串,但是有一个特定的测试用例

关注者
0
被浏览
29
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我不认为允许嵌套的格式化字符串文字(通过嵌套,我要指的是f'{f".."}')是仔细考虑可能的用例的结果,我更坚信仅允许它们使用才能使其符合规范。

    规范指出它们在括号内支持完整的Python
    表达式
    *。还指出,格式化的字符串文字 实际上只是 在运行时求值 的表达式
    (请参阅此处此处)。结果,只允许将格式化的字符串文字作为表达式放在另一个格式化的字符串文字中是有意义的,因为它会否定对Python表达式的完全支持。

    您找不到文档中提到的用例的事实(只能在测试套件中找到测试用例)是因为这可能是实现的一个很好的(副作用)效果,而不是激发用例。


    实际上,有两个例外:不允许为空表达式,并且lambda表达式必须用显式括号括起来。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看