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'