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

Sea*_*ais 5 python python-3.x f-string

当我以类似的方式使用带有格式说明符的 f 字符串时

>>> x = 1
>>> f'{ x:02 }'
Run Code Online (Sandbox Code Playgroud)

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

为什么会这样呢?

Sea*_*ais 6

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

我们可以解决这个问题

>>> f'{ x:02}'
Run Code Online (Sandbox Code Playgroud)

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


推荐阅读


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