【发布时间】:2023-03-11 12:34:01
【问题描述】:
在尝试使用新的(很棒的)python 3 literal string interpolation 的一些功能时,我发现了这个奇怪的区别。
例如,使用旧的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 字符串而不修改我的字符串,只修改调用。
str.format 和 f-string 在语法上有何区别?为什么这个例子略有不同?
【问题讨论】:
标签: python string format python-3.6 positional-parameter