Skip to main content
 首页 » 编程设计

python之带有 None 的 f 字符串格式说明符抛出 TypeError

2025年05月04日22kevingrace

将纯 f 字符串与 NoneType 对象一起使用有效:

>>> a = None 
>>> f'{a}' 
'None' 

但是,当使用格式说明符时,它会中断---就像 str.format() 一样:

>>> f'{a:>6}' 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: unsupported format string passed to NoneType.__format__ 
 
>>> '{:>6}'.format(a) 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: unsupported format string passed to NoneType.__format__ 

出乎意料的是,(至少对我而言)旧的 C 风格字符串格式化有效:

>>> '%10s' % a 
'      None' 

这是怎么回事?我不明白为什么 f'{a:>6}' 的计算结果不是 'None'。为什么格式说明符应该打破它?

这是 python 中的错误吗?如果它是一个错误,我该如何修复它?

请您参考如下方法:

None 不是字符串,因此 f'{None:>6}' 没有意义。您可以使用 f'{None!s:>6}' 将其转换为字符串。 !a、!s 和 !r 调用 ascii()、str() 和 repr() 分别在一个对象上。