在尝试使用新的(并且很棒的)python 3文字字符串插值的一些功能时,我发现了这个奇怪的区别。
例如,使用 old str.format
,我可以格式化具有动态位数的整数,如下所示:
>>> d = 5
>>> N = 3
>>> '{:0{N}d}'.format(d, N=N)
'005'
但是,当我尝试使用文字字符串进行等效操作时,出现错误:
>>> f'{:0{N}d}'
SyntaxError: f-string: empty expression not allowed
只有通过交换参数的顺序,我才能得到正确的格式
>>> f'{d:0{N}}'
'005'
这让我感到很奇怪,因为我认为我可以在不修改我的字符串的情况下切换到 f-strings,只有调用。
str.format
和 f-string之间的句法区别是什么?为什么这个例子略有不同?