为什么我不能在带有格式说明符的 f 字符串表达式周围使用空格?

Why can't I use spaces around an f-string expression with a format specifier?

当我以类似

的方式使用带格式说明符的 f 字符串时
>>> x = 1
>>> f'{ x:02 }'

它给了我ValueError: Unknown format code '\x20' for object of type 'int'。要解决此问题,我必须从 f 字符串表达式中删除周围的空格,例如 f'{x:02}'.

为什么会这样?

给定一个 f 字符串表达式,例如 f'{ x:02 }',表达式的格式说明符部分开始并包括冒号 (:) 之后的所有字符。这意味着 02 右侧的 space 是格式说明符的一部分。不管错误怎么说,正如 Chris Rands 所说,space 是一个有效的格式代码。导致错误的原因是我们对整数使用了无效的格式说明符。在 02 后添加 space 会使说明符无效。

我们可以通过

解决问题
>>> f'{ x:02}'

成功得到我01。但是,我 主观上 不推荐这种风格用于 f 字符串表达式,因为它看起来不平衡,即最左边的 space 在另一端没有配对 space表达方式。我不会使用任何周围的 space 代替(例如 f'{x:02}')。


推荐阅读


编辑: 我编辑了这个答案以提供正确的解释。在之前的编辑中,我错误地指出 space 不是格式中的有效代码。克里斯,谢谢您的更正。