Python 为什么是f';{None}一些字符串';不抛出错误?

Python 为什么是f';{None}一些字符串';不抛出错误?,python,python-3.x,f-string,Python,Python 3.x,F String,我想知道为什么f'{None}\u some_string'不抛出错误 下面是一些重现问题的示例: s1 = None # <class 'NoneType'> s2 = 'real_string' # <class 'str'> s1 + s2 # TypeError: unsupported operand type(s) for +: 'NoneType' and 'str f'{s1}_bla' 'None_bla' f'{s2}_bla' 'real

我想知道为什么
f'{None}\u some_string'
不抛出错误

下面是一些重现问题的示例:

s1 = None # <class 'NoneType'>
s2 = 'real_string' # <class 'str'>

s1 + s2 # TypeError: unsupported operand type(s) for +: 'NoneType' and 'str


f'{s1}_bla'

'None_bla'

f'{s2}_bla'

'real_string_bla'
s1=None#
s2='real_string'#
s1+s2#类型错误:不支持+:“NoneType”和“str”的操作数类型
f'{s1}_bla'
“没有”
f'{s2}_bla'
“真正的字符串”

s
None
时,像
f'{s}\u some\u string'
这样的表达式是否可能引发错误?

默认情况下,f-string应用
str()
(string)函数

f'{None}_some_string'
相当于

f'{str(None)}_some_string}'

默认情况下,f-string应用
str()
(字符串)函数

f'{None}_some_string'
相当于

f'{str(None)}_some_string}'

否。F-strings会自动将所有嵌入的表达式转换为字符串。因此,它类似于
str(s1)+str(s2)
如果不想自动格式化,就不要使用f字符串。@Barmar那么问题是
str(None)
为什么不抛出错误?
str(None)
'None'
它是有效的,因为
NoneType
类提供了
\uu str()
方法,该方法返回字符串
'None'
No。F-strings会自动将所有嵌入的表达式转换为字符串。因此,它类似于
str(s1)+str(s2)
如果不想自动格式化,就不要使用f字符串。@Barmar那么问题是
str(None)
为什么不抛出错误?
str(None)
'None'
它是有效的,因为
NoneType
类提供了
\uu str()
返回字符串的方法
'None'